코드 그라데이션

실전 예제 - 5. 연관관계 관리 본문

Spring/JPA 공부

실전 예제 - 5. 연관관계 관리

완벽한 장면 2023. 8. 25. 18:06

1. 글로벌 페치 전략 설정

 

static import 하면 더 깔끔하게 쓸 수 있음

클래스에다가

import static javax.persistence.FetchType.*;

  • => 정적 임포트 추가

Category

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "PARENT_ID")
private Category parent;

 

@ManyToOne은 기본이 LAZY 이기 때문에 굳이 안 써줘도 된다.

 

Delivery

@OneToOne(mappedBy = "delivery", fetch = LAZY)
private Order order;

 

Order

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "MEMBER_ID")
private Member member; 

@OneToOne(fetch = LAZY)
@JoinColumn(name = "DELIVERY_ID")
private Delivery delivery;

 

OrderItem

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "ORDER_ID")
private Order order;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "ITEM_ID")
private Item item;

 


영속성 전이 설정

 

정적 임포트문

import static javax.persistence.CascadeType.ALL; 추가

 

Order

@OneToOne(fetch = LAZY, cascade = ALL)
@JoinColumn(name = "DELIVERY_ID")
private Delivery delivery;

@OneToMany(mappedBy = "order", cascade = ALL)
private List<OrderItem> orderItems = new ArrayList<>();

 

이렇게 해주면

Order를 생성할 때 Delivery 넣고 OrderItem 넣고

persist()를 order 하나만 해주면 자동으로 같이 저장된다.

 

 

728x90

'Spring > JPA 공부' 카테고리의 다른 글

임베디드 타입(복합 값 타입)  (0) 2023.08.26
기본 값 타입  (0) 2023.08.26
고아 객체, 그리고 생명 주기  (0) 2023.08.25
영속성 전이(CASCADE)  (0) 2023.08.25
지연 로딩 활용  (0) 2023.08.24
Comments