강의 내용에서 이해안되는 부분 질문드립니다.
216
작성한 질문수 31
package jpabook.jpashop.domain;
import jakarta.persistence.*;
import jdk.jshell.Snippet;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Entity
@Table(name = "orders")
@Getter @Setter
public class Order {
@Id @GeneratedValue
@Column(name = "order_id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
private Member member;
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
private List<OrderItem> orderItems = new ArrayList<>();
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Delivery delivery; //배송정보
private LocalDateTime orderDate; //주문시간
@Enumerated(EnumType.STRING)
private OrderStatus status; //주문상태 [ORDER, CANCEL]
//이 연관관계 부분입니다.
//==연관관계 메서드==//
public void setMember(Member member) {
this.member = member;
member.getOrders().add(this);
}
public void addOrderItem(OrderItem orderItem) {
orderItems.add(orderItem);
orderItem.setOrder(this);
}
public void setDelivery(Delivery delivery) {
this.delivery = delivery;
delivery.setOrder(this);
}
//==연관관계 메서드==//
public void setMember(Member member) {
this.member = member;
member.getOrders().add(this);
}
public void addOrderItem(OrderItem orderItem) {
orderItems.add(orderItem);
orderItem.setOrder(this);
}
public void setDelivery(Delivery delivery) {
this.delivery = delivery;
delivery.setOrder(this);
}이 연관관계 메서드 부분이 이해가 안되어서 질문드립니다.
setMember 메소드에서 member.getOrders().add(this); 이 부분이 전혀 이해가 안되는데 설명 부탁드립니다.
addOrderItem 메소드에서 orderItems.add(orderItem); 와 orderItem.setOrder(this); 이 부분이 전혀 이해가 안되는데 설명 부탁드립니다.
setDelivery 메소드에서 delivery.setOrder(this); 이 부분이 전혀 이해가 안되는데 설명 부탁드립니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
whdk333님, JPA에서의 연관관계 메서드에 대해 질문주셨군요. 객체 간의 연관관계를 효율적으로 관리하기 위한 방법에 대해 구체적으로 설명드리겠습니다.
setMember메소드에서member.getOrders().add(this);이 부분은 ‘양방향 연관관계’를 설정할 때 사용됩니다. 여기서this는 현재Order인스턴스를 나타냅니다. 즉, 어떤Order인스턴스가 특정Member에 속하게 되면, 해당Member의orders리스트에도 이Order인스턴스를 추가함으로써 양쪽 모두에 연관관계가 설정되었음을 반영하는 것입니다.addOrderItem메소드의 경우,orderItems.add(orderItem);와orderItem.setOrder(this);부분에서는Order와OrderItem사이의 양방향 연관관계를 설정합니다.orderItems.add(orderItem);는Order인스턴스의orderItems리스트에 주문 항목인OrderItem을 추가합니다.orderItem.setOrder(this);를 통해OrderItem의 입장에서도 이를 주문한Order인스턴스를 자신의 소속으로 지정하여 양쪽 모두에서 서로를 참조할 수 있도록 합니다.setDelivery메소드에서delivery.setOrder(this);부분은Delivery와Order사이의 양방향 연관관계를 설정하는 과정에서 사용됩니다.Delivery인스턴스의order필드에 현재Order인스턴스(this)를 설정함으로써,Delivery입장에서는 자신이 어떤Order에 속하는지 알 수 있게 되고,Order입장에서도Delivery를 통해 배송 정보를 알 수 있게 됩니다.
각 메소드는 연관된 엔티티 간의 관계를 양방향으로 설정하는 데 필수적이며, 이를 통해 데이터의 일관성과 코드의 가독성을 유지할 수 있습니다.
변경감지(더티체킹) 이후 플러시할 경우의 쿼리
0
20
1
Spring AI 프레임워크를 사용하지 않은 이유
0
42
1
단일 테이블 시 null 값과 연관관계 필요성 질문
0
34
1
SpringBoot4 버전 Hibernate5JakartaModule 라이브러리 오류
0
36
1
aws 관련 질문드립니다.
1
50
3
강사님 질문 있어요.
0
40
2
RestTemplate과 webClient, RestClient에 대해서 질문드립니다.
0
38
2
회원 도메인 인터페이스 개발
0
42
1
setter 사용하지 않기
0
39
1
세션을 제대로 이해한게 맞는지 궁금합니다
0
31
1
jsp의 상대경로와 Controller에서 반환하는 이름이 달라도 괜찮나요?
0
30
1
안녕하세요 토비님 혹시 완성된 코드의 repository 주소는 없을까요?
0
49
2
자막 오타 제보
0
40
1
운영환경에 적용해볼 수 없을때...고민입니다 ㅠㅠ
0
45
1
rabbitmq에 configservice 연결에 대해 질문있습니다.
0
38
1
빈 스코프 개념의 중요성
0
31
1
트랙잭션 격리수준 선택에 대해서 질문
0
32
1
안녕하세요 치킨 디도스 이벤트 보고 흉내내보려 들어왔습니다..
0
40
2
실무 내용 문의드려요
0
33
2
join에대해 질문드립니다.
0
24
1
코드 질문
0
35
2
To-Do App
0
31
1
twitterdb 연결이 안돼요
1
36
2
SingletonService가 JVM이 뜰 때 생성되는게 맞나요?
0
78
2





