- 예제 1이랑 테이블 구조 동일함
- 참조를 사용하도록 변경함
- Member Orders 테이블의 관계
- Member (1) Orders(N) 의 관계
- 멤버 하나에 주문 여러개 가능
Order.java
@Table(name="ORDERS")
public class Order {
@Id @GeneratedValue
@Column(name="ORDER_ID")
private Long id;
// @Column(name="MEMBER_ID")
// private Long memberId;
// 예제 2 (s)
@ManyToOne
@JoinColumn(name = "MEMBER_ID")
private Member member;
// 예제 2 (e)
private LocalDateTime orderDate;
@Enumerated(EnumType.STRING)
private OrderStatus status;
}
- Order table 입장에선 Member 는 ManyToOne 관계이다
Member.java
public class Member {
@Id @GeneratedValue
@Column(name="MEMBER_ID")
private Long id;
private String name;
private String city;
private String street;
private String zipcode;
@OneToMany(mappedBy = "member")
private List<Order> orders = new ArrayList<>();
}
- Member table 입장에선 Order는 OneToMany 관계이다.
- mappedBy 로 Order table의 어떤 컬럼과 매핑 시킬건지 써놓는다.
- 이 경우엔 Order table의 mamber 와 매핑 시킬거기때문에 orders에 @OneToMany(mappedBy = "member") 어노테이션을 추가해준다. (양방향 연관관계)
- 근데 이 경우엔 예제이기 때문에 추가했지만 Order로 시작해 member 를 찾을 수 있으므로 굳이 orders를 추가 안해줘도 될거같다고 함!
- Orders table 과 OrderItem table의 관계
- Orders(1) OrderItem(N)
- 주문 하나에 주문한 상품이 여러개 일 수 있다.
- OrderItem 와 Item 의 관계
- OrderItem(N) Item(1)
- 아이템이 여러 주문 내역에 포함될 수 있다.
OrderItem.java
public class OrderItem {
@Id @GeneratedValue
@Column(name = "ORDER_ITEM_ID")
private Long id;
// @Column(name = "ORDER_ID")
// private Long orderId;
@ManyToOne
@JoinColumn(name = "ORDER_ID")
private Order order;
// @Column(name = "ITEM_ID")
// private Long itemId;
@ManyToOne
@JoinColumn(name="ITEM_ID")
private Item item;
private int orderPrice;
private int count;
}
Order.java
아래 컬럼 추가
@OneToMany(mappedBy = "order")
private List<OrderItem> orderItems = new ArrayList<>();
- 이 클래스에도 양방향 연관관계 추가해줌
- Order에 OrderItems는 유의미한 컬럼이 될 수 있음(근데 없어도됨)
- Order table 입장에선 OrderItem 은 OneToMany 관계이다.
- OrderItem의 order 컬럼과 매핑할거기때문에 mappedBy="order" 해준다.
References
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 - 인프런
JPA 를 공부하고 책을 보며 어려웠던 내용을 위주로 먼저 보았습니다. 옆에서 1:1 과외해주는 것 같이 생생하고 이해 잘되는 설명, 예제(코드)가 너무 좋았습니다. 어느 것 하나 애매함없이 모두
www.inflearn.com
'Spring > Spring JPA' 카테고리의 다른 글
다양한 연관관계 매핑 : 일대다 [1:N] (0) | 2024.03.18 |
---|---|
다양한 연관관계 매핑 (0) | 2024.03.16 |
연관관계 매핑 기초 (0) | 2024.01.28 |
엔티티 매핑 (0) | 2024.01.01 |
영속성 관리 (0) | 2023.12.31 |