카테고리 없음

JPA annotation - @EntityGraph, attributePaths

멋쟁휘개발자 2022. 5. 26. 12:58

@EntityGraph

[배경]

연관관계가 있는 엔티티를 조회했을 때, 지연 로딩(fetch = FetchType.LAZY)으로 설정되어 있으면

연관관계에서 종속된 엔티티는 실제 엔티티 객체가 조회되지 않고 proxy 객체를 만들어 대체되어 조회되며,

종속된 엔티티를 실제로 조회할 때, 실제 해당 엔티티의 select 쿼리가 실행된다.

 

[문제]

실제로 종속된 엔티티를 모두 조회해야 하는 상황이 확실할 경우, proxy 객체 조회 후 실제 엔티티 객체를 조회하는 것이 불필요한 상황이 될 수 있다.

 

[해결|개념]

이때 fetch 조인을 사용하여 EAGER와 같이 여러 번의 쿼리를 한 번에 조회할 수 있는데, Data JPA에서 fect 조인을 어노테이션으로 사용할 수 있도록 만들어 준 기능이다.

 

[속성]

@EntityGraph(attributePaths = "정의한 entity 속성명")

정의한 멤버변수만 EAGER 로 불러오고 나머지는 LAZY 로 불러온다