Delivery엔티티클래스 세팅

실습

설명

a. @Entity @Getter @Setter 세팅

 

b. 엔티티속성/필드 + 어노테이션 (실습사진참고)설정

-private Long id;

-private Order order;

-private Address address

-private DeliveryStatus status;

 

c.Orderdelivery 연관관계매핑

Order클래스 맵핑실습

설명

@OneToOne

-1:1 매핑이다.

*여기에서 고민해주어야 할 것이 있다.

 하나의 주문은 하나의 배송정보만, 하나의 배송은 하나의 주문정보만 가져야 한다

 이렇게 되어야 1:1 관계가 형성된다.

 

*JPA 에서는 1:1관계에서는 어디든 FOREIGN KEY를 주어도 된다 어디에 두느냐에 따라 장단점이 있다.

-선호하는 스타일은 access를 많이 하는 쪽에 foreign key를 두려고 한다.

-여기 시스템상 배송을 조회하는 것보다 주문을 보면서 배송을 확인한다.

 그래서 주문,Orderforeign key(delivery_id)를 두었다.

 

연관관계주인 정하기

order에도 delivery가 있고, delivery에도 order가 있다.

-Orderforeign key가 있으므로, delivery를 연관관계의 주인으로 정한다.

*1:1관계매핑은 기본편에서 확인할 것

 

그러므로 Order엔티티클래스에

@OneToOne

@JoinColumn(name = "delivery_id")

private Delivery delivery;

 

Delivery엔티티 클래스측에

@OnetoOne(mapped By = "delivery")로 설정

private Order order;

 

d. Address필드 재활용 및 @Embedded(내장값)어노테이션 설정

 

e. DeliveryStatus status 설정 및 DeliveryStatus Enum생성

@Enumerated(EnumType.STRING)어노테이션 설정

-@EnumeratedEnumType에 두가지 종류: ORDINAL, STRING

ORDINAL : 1, 2, 3, 4 숫자형태로 컬럼에 들어간다.

예를들어 1,2 사이에 다른 상태의 값이 생기면 3,4는 뒤로 밀리면서 4,5가 된다.

STRING : 숫자형태순서가 아닌, 중간에 값이 생겨도 밀려나거나 하는 법이 없다.

그래서 꼭 STRING을 써야 한다.

 

DeliveryStatus Enum생성

 

+ Recent posts