2.연관관계 매핑WEB JAVA SPRING/PROJECT2023. 9. 12. 16:59
Table of Contents
<ER 다이어그램 / ERD 기호 및 표기법>
실선 : 부모의 키가 일반키
점선 : 부모의 키가 pk (한쪽만 pk)
<전체 데이터베이스>
<예시>
item의 입장에서 order_item, cart_item은 일대다
하나의 상품은 여러 주문 상품, 장바구니에 들어갈 수 있다.
반대로
order_item, cart_item의 입장에서 item은 다대일
하나의 상품은 여러 주문 상품+ 여러 장바구니의 장바구니 상품 으로 들어갈 수 있다
Item.java
@Id
@Column(name = "item_id") //테이블에 매핑될 컬럼의 이름
//item클래스의 id변수와 item테이블의 item_id컬럼이 매핑되도록
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id; //상품코드
OrderItem.java
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "item_id")
private Item item;
CartItem.java
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "item_id")
private Item item;
Orders의 입장에서 order_item은 일대다
하나의 주문, 여러 주문 상품
/*
한쪽이 일대다면 다른쪽은 다대일
*/
order_item의 입장에서 Orders는 다대일
여러 주문 상품, 하나의 주문
Order.java
mappedBy가 있으면 연관관계 주인
@Id @GeneratedValue
@Column(name = "order_id")
private Long id;
@OneToMany(mappedBy = "order") //연관관계 주인
private List<OrderItem> orderItems = new ArrayList<>(); //하나의 주문이 여러개의 주문 상품을 가지므로 List사용
OrderItem.java
joinColumn이 있으면 fk 존재
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "order_id") //fk
private Order order;
'WEB JAVA SPRING > PROJECT' 카테고리의 다른 글
4.상품 수정하기 (0) | 2023.09.12 |
---|---|
3.상품 등록하기 (0) | 2023.09.12 |
1.로그인/로그아웃 (0) | 2023.09.12 |
스타트 스프링 부트 -1~5장 (0) | 2023.08.28 |
[Day-16] 간단한 주문 조회 V2: 엔티티를 DTO로 변환 (0) | 2023.08.28 |