본문 바로가기

Back-end/JPA

[JPA] Fetch Type란?

Fetch Type이란

 

Fetch TypeJPA가 하나의 Entity를 조회할 때, 연관관계가 있는 객체들을 어떻게 가져올 것이냐를 나타내는 설정값입니다.

 

Fetch Type은 크게 EagerLazy 두가지 전략이 있습니다.
Fetch Type Issue 상황이라는 것은 하나의 Entity를 로드할 때, 아래의 두가지 전략 중 고민하는 상황을 말합니다.

 

  1. 연관 관계에 있는 Entity를 모두 가져온다 -> Eager 전략
  2. 연관 관계에 있는 Entity 가져오지 않고, getter로 접근할 때 가져온다 -> Lazy 전략

 

 

Fetch Type이 동작하는 시점

 

JPA Entity Manager에 의해 관리되는 Persistence Context Entity가 Managed 상태로 올라올 때의 동작입니다.

 

queryDSL과 같은 쿼리 빌더를 이용해 아무리 Join 문을 짜도, (Fetch Join을 하지 않는 이상) 메인 도메인의 엔티티만 Persistence Context에 올라옵니다. 연관관계에 대한 Fetch도 메인 도메인만 일어납니다.

 

 

참고: http://jaynewho.com/post/39