본문 바로가기
공부/Spring

@EntityGraph을 통해 간편히 페치조인을 적용해보자

by JERO__ 2022. 8. 25.

@EntityGraph가 무엇일까?

@EntityGraph는 연관된 엔티티들을 SQL 한번에 조회하는 방법이다.

 

페치조인이 무엇일까?

  • member의 team은 지연로딩 관계라 가정해보자. 다음과 같이 team의 데이터를 조회할 때 마다 쿼리가 실행된다(N+1 문제)
  • 연관된 엔티티를 한번에 조회하려면 다음과 같이 페치 조인이 필요하다

 

@EntityGraph 사용해보자

  • 페치 조인(FETCH JOIN)의 간편 버전이다
  • LEFT OUTER JOIN 사용한다
public interface MemberRepository extends JpaRepository<Member, Long> {

	@Override
	@EntityGraph(attributePaths = {"team"})
	List<Member> findAll();
	
	@EntityGraph(attributePaths = {"team"})
	@Query("select m from Member m")
	List<Member> findMemberEntityGraph();
}

attributePaths에 페치 조인 대상을 작성한다.

 

댓글