JPA - 즉시로딩, 지연로딩

Codren·2021년 9월 27일
0

Spring Boot 쇼핑몰

목록 보기
17/32

Section 1. 즉시로딩

1. 즉시로딩

엔티티를 조회할 때 연관된 엔티티도 함께 조회하는 Fetch EAGER 타입




2. 즉시로딩 테스트

  • OrderItem 객체 조회




3. 즉시로딩 select 쿼리문

  • OrderItem 엔티티와 연관된 엔티티를 조회하고 연관된 엔티티의 연관된 엔티티 또한 조회



Section 2. 지연로딩

1. 지연로딩

연관된 엔티티는 사용할 때 조회하는 Fetch LAZY 타입

  • 실제 비즈니스 구현 시 매핑되는 엔티티의 개수 ↑
  • 사용하지 않는 데이터도 한꺼번에 조회하므로 성능 ↓




2. 지연로딩 설정

  • @ManyToOne 어노테이션에 fetch 설정 지정




3. 지연로딩 테스트

  • OrderItem 객체 조회

  • orderItem.getOrder().getClass() 수행 결과
    - 실제 객체가 아닌 프록시 객체를 넣어둠
    - 프록시 객체는 실제 사용 시점에 조회 쿼리문이 실행됨

  • orderItem.getOrder().getOrderDate() 수행 결과
    - 실제 사용 시점에 select 쿼리문이 수행됨




4. 연관 관계 매핑 지연로딩 설정

  • 연관 관계가 맺어진 엔티티의 fetch 전략을 모두 LAZY 로 설정

0개의 댓글