본문 바로가기

dev/JPA

JPA Eager Lazy Loading

JPA에서 즉시(Eager) 로딩과 지연(Lazy) 로딩이라는 기술을 지원하고 있습니다.

 

연관관계에 있는 엔티티를 조회하는 기술로

 

즉시 로딩은 엔티티를 조회할 때 해당 엔티티와 연관된 엔티티를 바로 조회하고

 

지연 로딩은 연관된 엔티티를 실제 사용할 때 조회합니다.

 

직원 엔티티 직급 즉시 로딩

 

직급 엔티티 즉시 로딩

 

직원 엔티티가 직급 엔티티를 즉시 로딩하는 것으로 설정하고

 

직원 엔티티 조회했을 때 직급 엔티티가 바로 확인되는 것을 통해서 즉시 로딩된 것을 확인할 수 있습니다.

 

직원 엔티티 직급 지연 로딩

 

직급 엔티티 지연 로딩

 

반대로 직원 엔티티가 직급 엔티티를 지연 로딩하는 것으로 설정하고

 

직원 엔티티를 조회했을 때 직급 엔티티가 프록시 객체인 것을 통해서 지연 로딩된 것을 확인할 수 있습니다.

 

지연 로딩은 프록시 객체를 통해 실제 데이터가 필요한 경우에 호출이 되기 때문에 유용하지만

 

연관된 엔티티를 계속 사용해야 한다면, 사용할 때마다 DB 조회를 해야 하는 N+1 문제가 발생할 수 있습니다.

 

따라서 연관된 엔티티는 지연 로딩으로 설정하고, 해당 엔티티가 자주 사용된다면 fetch join을 통해서 조회하는 방법이 유용합니다.

 

해당 글에 대한 정보는 김영한 님의 JPA 프로그래밍 도서를 참고했습니다.

https://lib.seoul.go.kr/search/detail/CATTOT000000775417

 

상세정보 | 서울도서관

공유할 sns 선택하기 카카오톡 공유하기 네이버로 공유하기 트위터로 공유하기 페이스북 공유하기 카카오스토리 공유하기 --> URL 공유하기 복사 표지보기 상세보기 MARC보기 책꽂이에 저장 상세

lib.seoul.go.kr

 

'dev > JPA' 카테고리의 다른 글

JPA QueryDSL Paging  (0) 2023.08.31
JPA QueryDSL 집계 쿼리  (0) 2023.08.31
JPA Insert Batch  (0) 2023.08.30
JPA ID SEQUENCE  (0) 2023.08.30
JPA Infinite Recursion 예외 처리  (0) 2023.08.29