[Spring Boot] 지연 로딩

우쓰·2023년 10월 28일
0

Spring

목록 보기
3/6

지연로딩


위처럼 연관관계 매핑을 할때

@ManyToOne(fetch = FetchType.LAZY)
@Entity
@Setter
@Getter
@ToString
public class OrderItem {

  @Id
  @GeneratedValue
  @Column(name = "order_item_id")
  private Long id;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "item_id")
  private Item item;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "order_id")
  private Order order;

  private int orderPrice;

  private int count;

  private LocalDateTime regTime;

  private LocalDateTime updateTime;
}

해당 어노테이션이 없을 경우엔 테이블을 조인해서 모두 실행하지만
, 위와 같이 어노테이션을 넣은 경우 쿼리가 한번에 실행되지 않는다


order클래스를 콘솔창에 찍어주면


HibernateProxy가 출력되어있다.
여기서 실제 엔티티 대신 프록시 객체가 들어간 것을 확인할 수 있다.

지연로딩을 사용해야하는 이유가 뭘까?

연관관계 매핑에서 여러개의 테이블을 조인해서 가지고 올때,
실제 비즈니스에서는 엔티티의 개수가 매우 많아 모두 가져오면
조회의 성능이 매우 떨어진다 때문에 지연 로딩을 사용하면 데이터 부하를 줄여 성능을 최적화할 수 있다.

0개의 댓글