실전 예제
글로벌 fetch 전략 설정
모든 연관 관계를 지연 로딩으로 설정한다.
@ManyToOne
,@OneToOne
은 기본이 즉시 로딩이므로 지연 로딩으로 바꿔준다.
영속성 전이 설정
@Entity
@Table(name = "ORDERS")
public class Order {
@Id
@GeneratedValue
@Column(name = "order_id")
private Long id;
// 지연 로딩으로 수정한다.
// CascadeType.ALL: 주문을 할 때 배송도 생성하겠다는 의미. 둘의 라이프 사이클을 맞추게 된다.
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "DELIVERY_ID")
private Delivery delivery;
// 주문을 생성할 때 주문 아이템도 같이 생성한다.
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
private List<OrderItem> orderItems = new ArrayList<>();
}
만약 라이프 사이클이 서로 일치하지 않고 로직이 복잡하다면 굳이 영속성 전이를 해줄 필요는 없다.
Last updated
Was this helpful?