Skip to content

Latest commit

 

History

History
12 lines (8 loc) · 846 Bytes

JPA_EAGER,LAZY_Loading.md

File metadata and controls

12 lines (8 loc) · 846 Bytes

EAGER의 경우 쿼리문이 한 번만 실행되지만, LAZY의 경우 2번의 쿼리문이 실행되므로 성능이 떨어진다고 볼 수 있습니다. 그럼에도 불구하고 LAZY 를 활용해야 하는 이유는 무엇일까요?

답변

  • EntityManger.find를 직접 호출할 때와 달리 JPQL을 사용할 때 EAGER는 N+1 문제가 즉각 발생하게 됩니다.
  • 연관된 테이블이 많아질수록 join이 많이, 복잡하게 이루어져서 성능과 가독성이 저해됩니다.
  • 지연 로딩으로 설정된 관계를 나중에, 또는 즉시 함께 불러오는 것은 선택이지만, 즉시 로딩은 선택의 여지가 없습니다.

확인해볼 쿼리

  • JPQL을 사용할 때 EAGER는 N+1 문제 즉각 발생하는 부분
  • EAGER 셋팅 시 연관된 테이블이 어떻게 쿼리가 발생하는지