[JPA] N+1 조회 문제와 해결방법
JPA의 N+1 조회 문제란? 예시) SQL 1번으로 100명의 회원을 조회하였는데, 각 회원마다 주문한 상품을 추가로 조회하기 위해 100번의 SQL을 추가로 실행하는 상황을 말한다. 한번 SQL을 실행해서 조회된 결과 수만큼 N번 SQL을 추가로 실행한다고 해서 N+1 문제라 한다. N+1 문제는 엔티티 글로벌 페치전략에 즉시 로딩을 사용할 때 발생할 수 있다. JPA를 사용하면서 성능상 가장 조심해야 하는 문제가 바로 N+1 문제이다. em.find()메소드로 엔티티를 조회할 때 연관된 엔티티를 로딩하는 전략이 즉시 로딩이면 데이터베이스에 JOIN 쿼리를 사용해서 한 번에 연관된 엔티티까지 조회한다. Order order = em.find(Order.class, 1L); // 즉시로딩으로 위 엔티티..
프로그래밍/JPA
2020. 7. 10. 00:46