실전 예제

글로벌 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