N+1문제?

연관 관계가 설정된 엔티티 사이에서 한 엔티티를 조회하였을 때, 조회된 엔티티의 개수(n)만큼 연관된 엔티티를 조회하기 위해 추가적인 쿼리가 발생하는 문제를 의미한다.

EAGER인 경우

  1. JPQL에서 만든 SQL을 통해 데이터 조회
  2. 이후 JPQ에서 Fetch 전략을 가지고 해당 데이터의 연관 관계인 하위 엔티티들을 추가 조회
  3. 2번의 과정으로 N+1문제 발생

LAZY인 경우

  1. JPQL에서 만든 SQL을 통해 데이터를 조회
  2. JPA에서 Fetch 전략을 가지지만, 지연 로딩이기 때문에 추가 조회는 하지 않음
  3. 하지만 하위 엔티티를 가지고 작업하게 되면 추가 조회가 발생하기 때문에 결국 N+1문제 발생