회원 - 주문 : 1:N
주문 - 상품(물품) 여러개 주문 가능 1 : n => 중간에 주문상품을 두어서 여러개를 놓는다.
카테고리 - 상품 n : n
도메인 모델
회원 엔티티
pk 값을 다 Long type으로 잡았다.
임베디드 타입(내장 값 타입)으로 Address를 넣어주었다.
orders는 주문을 List로 가지게 된다.
Order와 Item사이 중간에 OrderItem이 있는데 1 : N , N : 1 이 있는 관계를 풀어서 만들었다.
( id, item, order, orderPrice, count를 넣어놓았다.)
그리고 Member가 Order가지고 있고 Order는 Member을 가지고 있는 양방향 연관관계이다.
이 관계의 내용은 회원이 주문을 생성하는 것으로 생각하지 말고 주문이 필요할 때 회원을 생성한다 라고 생각하자.
(즉 order에서 필터링 조건으로 member가 들어가게 된 것이다.)
회원 테이블 분석
MEMBER 같은 경우는 거의 1:1 Mapping이다. MEMBER와 DELIVERY의
CITY / STREET / ZIPCODE는 value type이 쭉 들어가 있는 것이다.
ITEM같은 경우는 single table 전략을 쓴 것이다.(한 테이블에 다 넣고 DT그리고 Member가 Order가지고 있고 Order는 Member을 가지고 있는 양방향 연관관계이다.
이 관계의 내용은 회원이 주문을 생성하는 것으로 생각하지 말고 주문이 필요할 때 회원을 생성한다 라고 생각하자.
(즉 order에서 필터링 조건으로 member가 들어가게 된 것이다.)
Category같은 경우에는 관계형 데이터베이스에서 중간에 mapping table를 두어야 한다.
(즉 CATEGORY와 ITEM의 관계를 n : n 관계를 1:n / n:1관계로 바꿔야한다.)
연관관계 매핑 분석
회원 엔티티 그림 부분에서
주문쪽에 외래키가 있다.(1:n의 n쪽에 무조건 외래키가 존재한다.)
Order의 있는 MEMBER가 연관관계의 주인이 된다. 연관관계의 주인을 세팅 해야 값이 변경이 된다.
그리고 마지막 내용에 ManyToMany는 실무에서는 쓰면 안된다.
그리고 꼭 외래키(FK)가 있는 곳을 연관관계의 주인으로 정해줘라.
<출처 김영한: 실전! 스프링 부트와 JPA 활용1 - 웹 어플리케이션 개발 >
'Spring > SpringBoot' 카테고리의 다른 글
도메인 분석 설계 - 엔티티 설계시 주의점 (0) | 2022.04.05 |
---|---|
도메인 분석 설계 - 엔티티 클래스 개발2 (0) | 2022.04.02 |
SpringBoot Error 해결 (0) | 2022.04.02 |
도메인 분석 설계 - 요구사항 분석 (0) | 2022.04.01 |
프로젝트 환경설정 - JPA와 DB 설정, 동작확인 (0) | 2022.03.30 |