글로벌 패치 전략 설정
- 모든 연관관계를 지연 로딩으로
- @ManyToOne, @OneToOne은 기본이 즉시 로딩이므로 지연 로딩으로 변경
예시
Category.java
- 지연로딩 추가
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PARENT_ID")
private Category parent;
Delivery.java
@OneToOne(mappedBy = "delivery", fetch = FetchType.LAZY)
private Order order;
Order.java
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "MEMBER_ID")
private Member member;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "DELIVERY_ID")
private Delivery delivery;
OrderItem.java
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ORDER_ID")
private Order order;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="ITEM_ID")
private Item item;
영속성 전이 설정
- Order -> Delivery 를 영속성 전이 ALL 설정
- Order -> OrderItem을 영속성 전이 ALL 설정
- 주문을 할떄 동시에 일어나는 것들 (lifecycle 이 동일한것들 !!)
예시
Order.java
@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<>();
- 위와같이 설정해주면 persist 를 order 하나만 해도 위에 두 객체 모두 디비에 insert 됨
'Spring > Spring JPA' 카테고리의 다른 글
임베디드 타입 (0) | 2024.03.22 |
---|---|
값 타입 (0) | 2024.03.22 |
영속성 전이 : CASCADE와 고아 객체 (0) | 2024.03.20 |
즉시 로딩과 지연 로딩 (0) | 2024.03.20 |
프록시 (0) | 2024.03.20 |