Delivery엔티티클래스 세팅
실습
설명
a. @Entity @Getter @Setter 세팅
b. 엔티티속성/필드 + 어노테이션 (실습사진참고)설정
-private Long id;
-private Order order;
-private Address address
-private DeliveryStatus status;
c.Order와 delivery 연관관계매핑
Order클래스 맵핑실습
설명
@OneToOne
-1:1 매핑이다.
*여기에서 고민해주어야 할 것이 있다.
하나의 주문은 하나의 배송정보만, 하나의 배송은 하나의 주문정보만 가져야 한다.
이렇게 되어야 1:1 관계가 형성된다.
*JPA 에서는 1:1관계에서는 어디든 FOREIGN KEY를 주어도 된다. 어디에 두느냐에 따라 장단점이 있다.
-선호하는 스타일은 access를 많이 하는 쪽에 foreign key를 두려고 한다.
-여기 시스템상 배송을 조회하는 것보다 주문을 보면서 배송을 확인한다.
그래서 주문,Order에 foreign key(delivery_id)를 두었다.
연관관계주인 정하기
order에도 delivery가 있고, delivery에도 order가 있다.
-Order에 foreign 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)어노테이션 설정
-@Enumerated의 EnumType에 두가지 종류: ORDINAL, STRING
ORDINAL : 1, 2, 3, 4 숫자형태로 컬럼에 들어간다.
예를들어 1,2 사이에 다른 상태의 값이 생기면 3,4는 뒤로 밀리면서 4,5가 된다.
STRING : 숫자형태순서가 아닌, 중간에 값이 생겨도 밀려나거나 하는 법이 없다.
그래서 꼭 STRING을 써야 한다.
DeliveryStatus Enum생성
'신입개발자로 취업하기까지 > JPA쇼핑몰기능구축' 카테고리의 다른 글
20200523 엔티티설계 및 개발시 주의점_1 (0) | 2020.06.08 |
---|---|
20200519 도메인분석설계_엔티티클래스 개발 1-6 (0) | 2020.06.07 |
20200517 도메인분석설계_엔티티클래스 개발 1-4 (0) | 2020.06.07 |
20200516 도메인분석설계_엔티티클래스 개발 1-3 (0) | 2020.06.07 |
20200511 도메인분석설계_엔티티클래스 개발 1-2 (0) | 2020.05.27 |