인프런 - 실전! 스프링 데이터 JPA


문제 발생

  • memberRepository.findAll() 함수 실행 시 Member 테이블만 조회되며, Team 테이블과 연관된 컬럼은 HibernateProxy$XXX.. 클래스를 가지는 가짜 객체로 채워지게 된다.
  • 실제 Team 테이블 내 데이터 조회 시에 다시 한번 쿼리문을 던져 데이터를 가져오게 된다.
  • Team 테이블에 N번 접근 시, N번 쿼리 던짐, 네트워크 낭비
  • N + 1 문제 발생

해결방안 - 페치조인

페치조인 설정
페치조인으로 설정 시 한방쿼리로 조회함

페치 조인을 쓰고싶을 경우 무조건 jpql 을 써야할까?

  • @EntityGraph 로 해결

  • jpql과 섞어쓰는 것도 가능함

  • Entity에 선언 가능

실제 사용 방법

+ Recent posts