지연 로딩
@ManyToOne(fetch = FetchType.LAZY)
해당 객체는 프록시 객체로 생성되며, get 할때 쿼리를 수행하여 가져옴.
@BatchSize(int) 로 쿼리를 하나만 수행하게 할 수 있다.
즉시 로딩
@ManyToOne(fetch = FetchType.EAGER)
연관된 엔티티 객체 조회시 하나의 쿼리로 조회하며, 엔티티 객체가 된다.
JPQL에서 (1 + N) 문제를 일으킨다.(호출하지 않은 쿼리도 EAGER 매치가 된 객체 쿼리가 수행됨)
따라서 상상하지 못한 쿼리가 수행됨.
*** 실무에서는 지연 로딩을 사용하라
@ManyToOne, @OneToOne은 기본이 즉시 로딩 -> 지연 로딩으로 설정
@OneToMany, @ManyToMany는 기본이 지연 로딩
JPQL fetch 조인이나, 엔티티 그래프 기능을 사용할 것
'JPA > JPA' 카테고리의 다른 글
고아 객체 (0) | 2020.06.09 |
---|---|
영속성 전이(CASCADE) (0) | 2020.06.09 |
양방향 매핑 예제 (0) | 2020.06.09 |
객체와 테이블 연관관계 매핑 (0) | 2020.06.09 |
엔티티 매핑 (0) | 2020.06.09 |