글로벌 페치 전략 설정
- 모든 연관관계를 지연 로딩으로 바꾸기
@ManyToOne
,@OneToOne
은 기본이 즉시 로딩이므로 지연로딩으로 변경
영속성 전이 설정
Order
→Delivery
를 영속성 전이 ALL 설정
Order
→OrderItem
을 영속성 전이 ALL 설정
코드
@Entity
public class Category extends BaseEntity {
@Id @GeneratedValue
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn
private Category parent;
@OneToMany(mappedBy = "parent")
private List<Category> children = new ArrayList<>();
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable
private List<Item> items;
private String name;
}
@Entity
public class Delivery extends BaseEntity {
@Id @GeneratedValue
private Long id;
@OneToOne(mappedBy = "delivery", fetch = FetchType.LAZY)
private Order order;
private String city;
private String zipcode;
@Enumerated(EnumType.STRING)
private DeliveryStatus status;
}
@Entity
@Table(name = "ORDERS")
public class Order extends BaseEntity {
@Id
@GeneratedValue
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn
private Member member;
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
private List<OrderItem> orderItems;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn
private Delivery delivery;
private Date orderDate;
@Enumerated(EnumType.STRING)
private OrderStatus status;
public void addOrderItem(OrderItem orderItem) {
orderItems.add(orderItem);
orderItem.setOrder(this);
}
}
@Entity
public class OrderItem extends BaseEntity {
@Id
@GeneratedValue
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn
private Order order;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn
private Item item;
private int orderPrice;
private int count;
}
Uploaded by N2T
(23.06.12 10:36)에 작성된 글 입니다.