샘플 데이터 입력시 OrderItem, Delivery를 persist()하지 않는 이유
확인 차원에서 질문드립니다.
샘플 데이터를 넣는 코드에서 member, book, order은 em.persist()를 통해 영속성 컨텍스트에 등록합니다.
반면에 orderItem과 delivery는 따로 persist()를 하지 않습니다. 그 이유가 Order 엔티티 연관 관계에서 Cascasde 옵션을 했기 때문에, order 객체를 영속성 컨텍스트에 올려 놓는 순간, orderItem과 delivery 객체도 함께 등록되기 때문이라고 이해했습니다.
제가 잘 이해했는지 궁금합니다.
package jpabook.jpashop.domain;
@Entity
@Table(name = "orders")
@Getter
@Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Order {
....
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
private List<OrderItem> orderItems = new ArrayList<>();
@OneToOne(fetch = LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "delivery_id")
private Delivery delivery;
....
}
public void dbInit1() {
Member member = createMember("userA", "서울", "1", "1111");
em.persist(member);
Book book1 = createBook("JPA1 BOOK", 10000, 100);
em.persist(book1);
Book book2 = createBook("JPA2 BOOK", 20000, 100);
em.persist(book2);
OrderItem orderItem1 = OrderItem.createOrderItem(book1, 10000, 1);
OrderItem orderItem2 = OrderItem.createOrderItem(book2, 20000, 2);
Delivery delivery = createDelivery(member);
Order order = Order.createOrder(member, delivery, orderItem1, orderItem2);
em.persist(order);
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
김동민님의 질문에 대해서는 강의 내용과 밀접한 연관이 있는 질문으로 보이며, 동일하거나 유사한 주제에 대해 다룬 답변 URL을 찾아보았습니다.
Order 엔티티에 cascade = CascadeType.ALL 옵션이 주어진 경우에는 Order 엔티티를 영속화할 때 연관된 OrderItem과 Delivery 엔티티도 함께 영속화된다는 내용이 이해한 내용과 맞습니다. 다음 링크에서 비슷한 질문에 대한 답변을 참고하실 수 있습니다.
- 질문 제목: OrderService의 order() 메서드 호출시 OrderItem Insert에 대해 궁금한 점이 있습니다.
- 링크: OrderService의 order() 메서드 호출시 OrderItem Insert에 대해 궁금한 점이 있습니다.
해당 답변을 참고하시면 cascade 옵션과 관련하여 더 깊이 있는 이해를 할 수 있을 것입니다.
강의 관련 외 질문입니다.
0
66
2
SpringBoot4 + Hibernate7 모듈 등록 방법 공유
0
90
1
BeanCreationException
0
89
3
Update 후 UpdateMemberResponse 매핑할 때
0
47
1
트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?
0
99
2
페이징 + 검색조건 관련해서 질문드립니다.
0
70
1
Query Dsl Q파일 질문입니다.
0
83
1
루트 쿼리라는것은
0
59
1
메서드를 분리하는 기준
0
63
1
findAllWithMemberDelivery 메서드 질문드립니다.
0
110
3
연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략
0
85
2
fetch join과 영속화와 OSIV의 관계
0
86
2
Distinct 사용 전 결과에 대한 의문
0
113
2
레포지토리 계층에서의 트랜잭션에 대한 의문
0
57
1
영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.
0
78
2
dto 필드 속 엔티티 여부
0
60
1
뷰템플릿 사용 시
0
76
2
Result 클래스 관련 질문
0
56
1
@PostConstruct 프록시 관련 질문드립니다
0
86
1
DTO 대신 Form 사용은 안되나요?
0
136
1
OSIV ON 상태일 때
0
96
1
fetch join VS fetch join 페이징 궁금증
0
180
2
양방향 연관관계 알아보는 법?
0
105
1
16강 17강 간단 정리 이게 맞을까요 ?
0
165
2





