inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

강의 내용에서 이해안되는 부분 질문드립니다.

220

whdk333

작성한 질문수 31

0

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);
    }

이 연관관계 메서드 부분이 이해가 안되어서 질문드립니다.

  1. setMember 메소드에서 member.getOrders().add(this); 이 부분이 전혀 이해가 안되는데 설명 부탁드립니다.

 

  1. addOrderItem 메소드에서 orderItems.add(orderItem); 와 orderItem.setOrder(this); 이 부분이 전혀 이해가 안되는데 설명 부탁드립니다.

 

  1. setDelivery 메소드에서 delivery.setOrder(this); 이 부분이 전혀 이해가 안되는데 설명 부탁드립니다.

김영한강사님 스프링 spring jpa 강의 질문 연관관계메서드

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

whdk333님, JPA에서의 연관관계 메서드에 대해 질문주셨군요. 객체 간의 연관관계를 효율적으로 관리하기 위한 방법에 대해 구체적으로 설명드리겠습니다.

  1. setMember 메소드에서 member.getOrders().add(this); 이 부분은 ‘양방향 연관관계’를 설정할 때 사용됩니다. 여기서 this는 현재 Order 인스턴스를 나타냅니다. 즉, 어떤 Order 인스턴스가 특정 Member에 속하게 되면, 해당 Memberorders 리스트에도 이 Order 인스턴스를 추가함으로써 양쪽 모두에 연관관계가 설정되었음을 반영하는 것입니다.

  2. addOrderItem 메소드의 경우, orderItems.add(orderItem);orderItem.setOrder(this); 부분에서는 OrderOrderItem 사이의 양방향 연관관계를 설정합니다. orderItems.add(orderItem);Order 인스턴스의 orderItems 리스트에 주문 항목인 OrderItem을 추가합니다. orderItem.setOrder(this);를 통해 OrderItem의 입장에서도 이를 주문한 Order 인스턴스를 자신의 소속으로 지정하여 양쪽 모두에서 서로를 참조할 수 있도록 합니다.

  3. setDelivery 메소드에서 delivery.setOrder(this); 부분은 DeliveryOrder 사이의 양방향 연관관계를 설정하는 과정에서 사용됩니다. Delivery 인스턴스의 order 필드에 현재 Order 인스턴스(this)를 설정함으로써, Delivery 입장에서는 자신이 어떤 Order에 속하는지 알 수 있게 되고, Order 입장에서도 Delivery를 통해 배송 정보를 알 수 있게 됩니다.

각 메소드는 연관된 엔티티 간의 관계를 양방향으로 설정하는 데 필수적이며, 이를 통해 데이터의 일관성과 코드의 가독성을 유지할 수 있습니다.

섹션2, 대화&세션관리 수업 자료 누락

0

11

1

HelloSpringApplication.java 클래스 실행 오류

0

15

1

build 시 에러 해결방법 공유(docker.desktop 업데이트 -> 의존성 버전 수정)

0

37

2

Inner class로 Config를 지정하는 이유

0

29

1

네이버 API | '검색 - 책' API 제공 중단

0

47

2

Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.

0

49

2

장치 의존성과 CSR

0

36

1

테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.

0

32

1

[영한님]Spring Boot 및 프로젝트 생성

0

60

2

리뉴얼 시기

0

53

2

JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문

0

57

3

강의 요청 문의

0

40

2

클로드코드 명령어-대화&세션관리 수업 자료

0

43

1

PlatformTransactionManager, ResourcelessTransactionManager 질문

1

68

2

자료 한번에 다운받기

0

33

1

스프링 빈 등록 방법 2가지 다 알아야하는 이유

0

59

1

mybatis 를 이용한 crud에서 insert에서 resultType='long" 이라고 하셨는데요,

0

28

1

설계 트레이드 오프 링크 접속 안됨

0

85

2

테스트 질문, 어떤것을 사용할것인것에 대해서

0

46

1

깃허브주소 궁금합니다.

0

36

2

mariaDB 설정

0

33

1

섹션4 퀴즈 오타있어요.

0

48

1

service-discovery 프로세스 가동 이유

0

51

1

AWS 배포 성능테스트

0

76

2