DevBoi

[JPA] EntityGraph 란 본문

Develop/[JPA]

[JPA] EntityGraph 란

HiSmith 2022. 3. 21. 16:53
반응형

엔티티 그래프 : 엔티티 조회시점에 연관된 엔티티들을 함께 조회하는 기능

-정적으로 정의하는 Named 엔티티 그래프

-동적으로 정의하는 엔티티 그래프

 

정적 엔티티 그래프

해당 같은 케이스 때, Order을 조회하면, member를 엔티티 그래프에 정의하였기 때문에

Member도 같이조회를 한다.(패치 전략이 지연로딩이여도 적용된다.)

실제로 repository에서 사용을 한다고하면, 아래와 같다.

 

Named 엔티티 그래프는 정적으로 정의한다.

 

 

추가로, 기존 전략이 정적으로 선언이 되어있다고 해도

코드를 활용하여, 값을 가져올때, Map 형태로 엔티티 그래프를 가져와서, 서브 그래프를 추가하고, 노드 속성을 추가하여, 전략을 바꿔

조회를 할 수 있다.

 

추가,서브 그래프란 무엇일까

해당과 같이 엔티티 그래프를 사용하면, 우선 한개의 엔티티만 추가로 사용가능하다

깊이도 2뎊스 까지만 가능하다.

 

만약에 subgraph를 통해서, 하위 그래프의 하위 엔티티까지 보고싶다면, 해당 subgrapth까지 선언이 가능하다

해당 기능은 물론 패치 조인을 통해서도 구현이 가능하다(엔티티 2개까지는)

그렇지만, 만약에 재사용을 한다고 가정하면, 너무 중복되는 쿼리가 많아지는 문제가 있다.

 

따라서 엔티티 그래프는 동적으로 전략을 바꿀 때 유용하다.

 

 

또한 hint로 사용할때 fetchgraph와, loadgraph가 있는데

fetchgraph는 엔티티그래프에 선택한 속성만 함께 조회를 하고

loadgraph는 선택한 속성 + 즉시로딩으로 설정한 연관관계도 함께 조회를 한다.

 

반응형

'Develop > [JPA]' 카테고리의 다른 글

[JPA] Dto 사용이유  (0) 2022.03.21
[JPA] 엔티티 설계시 주의사항  (0) 2022.03.21
[JPA] Open session in view(OSIV)란  (0) 2022.03.21
[JPA] JPA 트랜잭션 사용  (0) 2022.03.20
[JPA]QueryDSL 사용이유, 정의  (0) 2022.03.20