반응형
모든 연관관계는 지연로딩으로 설정!
(안바꿀시, 1+N문제 발생)
Many to X(Many to One, Many to Many)는
디폴트값이 fetch = FetchType.EGER 이므로 모두 LAZY로 바꿔야함
다른 One to X(One to Many, One to One)는
디폴트값이 fetch = FetchType.LAZY 이므로 굳이 안바꿔줘도 된다.
예시)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "item_id")
private Item item;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "order_id")//양방향일때 해줘야됨
private Order order;
엔티티에는 가급적 Setter를 사용하지 말자
Setter가 모두 열려있다. 변경 포인트가 너무 많아서, 유지보수가 어렵다. 나중에 리펙토링으로 Setter 제거
컬렉션은 필드에서 초기화 하자.
Member member = new Member();
System.out.println(member.getOrders().getClass());
em.persist(team);
System.out.println(member.getOrders().getClass());
//출력 결과
/*
class java.util.ArrayList
class org.hibernate.collection.internal.PersistentBag
*/
cascade 옵션
예시)
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
private List<OrderItem> orderItems = new ArrayList<>();
/*
원래는 이렇게 다해줘야되는데
persist(orderItemA);
persist(orderItemB);
persist(orderItemC);
*/
persist(order)만 해주면됨
반응형
'Spring > SpringBoot' 카테고리의 다른 글
#6 SpringBoot View- (ThymeLeaf, BootStrap 설정) (0) | 2022.04.10 |
---|---|
#5 멤버 - Service, Repository 구현 (0) | 2022.04.04 |
#3 엔티티 생성 + JPA관계형DB 설계 (0) | 2022.04.03 |
#2 application.yml vs properties, SpringBoot쿼리 파라미터 (0) | 2022.04.03 |
#1 JPA 프로젝트생성, 뷰(thymeleaf), 빌드 (0) | 2022.04.03 |