JPA(Java Persistence API)는 엔티티를 조회할 때 즉시 로딩(EAGER)과 지연 로딩(LAZY) 2가지 방식이 있습니다. 즉시 로딩은 엔티티를 조회할 때 연관된 엔티티까지 한 번에 가져오며, 지연 로딩은 엔티티 조회 시 연관된 엔티티를 가져오지 않고, 필요한 시점에 가져오는 방식입니다. FetchType이란?JPA가 엔티티를 조회할 때, 해당 엔티티와 연관관계를 맺은 엔티티를 어떻게 가져올지 설정하기 위함입니다. JPA는 사용자가 직접 쿼리를 생성하지 않아도 엔티티의 필드를 보고 상황에 맞게 쿼리를 생성합니다. 따라서 하나의 엔티티에 연관관계를 맺은 엔티티 매핑되어 있다면 같이 조회할 것인지 따로 조회할 것인지 선택할 수 있습니다. 따로 설정하지 않을 경우 default 값은 다음과 같..
프록시
연관관계를 맺은 엔티티를 모두 포함시켜 조회하는 경우 비효율적일 수 있습니다. 굳이 불필요한 정보까지 조회하기 위해 쿼리가 복잡해지면 성능에도 영향을 끼칠 수 있기 때문입니다. JPA(Java Persistence API)는 이러한 문제를 대비하여 지연 로딩과 프록시를 제공합니다. 지연 로딩은 연관된 엔티티를 실제로 필요할 때까지 로딩을 지연시키는 방식으로, 성능을 향상하고 불필요한 쿼리를 방지합니다. 프록시는 실제 엔티티 대신 사용되며, 필요한 경우 실제 엔티티를 가져오게 됩니다. 프록시(Proxy)지연 로딩을 이해하려면, 먼저 프록시의 개념을 이해해야 합니다. JPA는 EntityManager를 통해 엔티티를 조회하는 메서드를 제공합니다. 앞으로 EntityManager를 em으로 축약하여 부르겠습니..