JPA

개발/자바

JPA N+1 문제와 해결 방법

JPA를 사용할 때 N+1 문제는 성능상 가장 주의해야하는 부분 중 하나이다. 부서와 사원 같은 1:N 관계의 엔티티 구조에서 부서만 먼저 조회한 뒤 나중에 부서에 속한 사원 목록에 접근할 때 조회한 부서 수만큼 사원 목록 조회 쿼리가 수행되면서 성능 문제가 발생하는 경우라고 할 수 있다. N+1 번 쿼리가 수행된다고 해서 N+1 문제라고 부른다. 1은 처음에 부서 목록 조회한 쿼리, N은 조회한 부서 개수만큼 수행되는 사원 목록 조회 쿼리. 부서 엔티티에서 사원 목록 fetch 설정을 즉시 로딩(EAGER), 지연 로딩(LAZY)으로 하던 모두 발생할 수 있다. 즉시 로딩 다음과 같이 EntityManager를 통해 조회하면 즉시 로딩 설정된 사원 목록이 같이 조회되기 때문에 N+1 문제가 발생하지 않..

bebeside77
'JPA' 태그의 글 목록