-
[Spring JPA] FetchType 이란? (EAGER, LAZY Fetch)Back End/Spring Data JPA 2021. 11. 2. 20:55
# FetchType
- 연관관계 어노테이션에 설정한다.
# FetchType.EAGER
- 해당 연관관계 필드를 가진 엔티티가 조회될 때, 그 필드도 같이 조회 하여 영속성 컨텍스트에 추가한다. (query 가 추가됨)
- 예시로는 밑의 코드의 User 를 select 할 때, ShppingList 도 같이 조인되어 select 된다.
@Entity @NoArgsConstructor @Data @ToString(callSuper =true) @EqualsAndHashCode(callSuper = true) public class User { @OneToMany(fetch=FetchType.EAGER) List<ShoppingList> shoppinglists; }
# FetchType.LAZY
- 해당 연관관계 필드를 가진 엔티티가 조회 되더라도, 연관관계를 맺은 필드(또 다른엔티티)는 조회하지 않는다.
- 해당 엔티티가 Getter로 연관관계를 가진 필드엔티티를 호출할 때 비로소 조회된다. (지연조회)
- 밑의 예시로는 User가 select 되더라도, User.getShoppinglists() 호출 전까지는 조회가 지연되어 영속성 컨텍스트에서 제외된다.
@Entity @NoArgsConstructor @Data @ToString(callSuper =true) @EqualsAndHashCode(callSuper = true) public class User { @OneToMany(fetch=FetchType.LAZY) List<ShoppingList> shoppinglists; }
728x90'Back End > Spring Data JPA' 카테고리의 다른 글
[Spring JPA] JPA의 사실과 오해 (feat. NHN Cloud) (0) 2021.12.23 [Spring JPA] Setter를 사용하지 않는다. (0) 2021.11.30 [Spring JPA] Dirty Check 는 무엇이고, 그로 인한 성능적인 손해는 무엇일까? (0) 2021.11.02 [Spring JPA] 쿼리메소드, JPQL, NativeQuery (@Query) (0) 2021.11.01 [Spring JPA] Repository Query Keywords (0) 2021.10.27