# 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;
}