* 요구사항 분석
- 회원 기능
- 회원 등록
- 회원 조회
- 상품 기능
- 상품 등록
- 상품 수정
- 상품 조회
- 주문 기능
- 상품 주문
- 주문 내역 조회
- 주문 취소
- 기타 요구사항
- 상품은 재고 관리가 필요하다.
- 상품의 종류는 도서, 음반, 영화가 있다.
- 상품을 카테고리로 구분할 수 있다.
- 상품 주문 시 배송 정보를 입력할 수 있다.
* 도메인 모델과 테이블 설계
Member(회원) : 이름, 임베디드 타입인 주소(Address), 주문(orders) 리스트를 가진다.
Order(주문) : 주문은 상품을 주문한 회원과 배송 정보, 주문 날짜, 주문 상태를 가진다.
주문 상태(status)는 열거형을 사용하여 주문(ORDER)/취소(CANCEL)를 표현할 수 있다.
한번 주문 시 여러 상품을 주문할 수 있으므로 주문과 주문상품(OrderItem)은 1:N 관계이다.
OrderItem(주문 상품) : 주문한 상품 정보와 주문 금액(orderPrice), 주문 수량(count) 정보를 가진다.
Item(상품) : 이름, 가격, 재고수량(stockQuantity)을 가진다. 상품을 주문하면 재고수량이 줄어든다.
Delivery(배송) : 주문 시 하나의 배송 정보를 생성하기에, 주문과 배송은 1:1 관계이다.
Category(카테고리) : 상품과 N:N 관계이다.
Address(주소) : 값 타입(임베디드 타입)이다. 회원(Member)과 배송(Delivery)에서 사용한다.
회원 - 주문
1:N 양방향 관계, Order.member를 ORDERS.MEMBER_ID 외래 키와 매핑
(외래키가 있는 주문이 연관관계의 주인)
주문상품 - 주문
N:1 양방향 관계, OrderItem.order를 ORDER_ITEM.ORDER_ID 외래 키와 매핑
(외래 키가 주문상품에 있으므로 주문상품이 연관관계의 주인)
주문상품 - 상품
N:1 단방향 관계, OrderItem.item을 ORDER_ITEM.ITEM_ID 외래 키와 매핑
주문 - 배송
1:1 양방향 관계, Order.delivery를 ORDERS.DELIVERY_ID 외래 키와 매핑
카테고리 - 상품
@ManyToMany를 사용하여 매핑
(실무에서 @ManyToMany는 사용 X, 여기서는 다대다 관계를 예제로 보여주기 위해 추가했을 뿐이다.)
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 강의 | 김영한 - 인프런 (inflearn.com)
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 강의 | 김영한 - 인프런
김영한 | 실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니
www.inflearn.com
본 게시물은 위 강의를 공부하고 정리한 글입니다.
'WEB > Spring Boot' 카테고리의 다른 글
[Spring Boot] 쇼핑몰 #4 - 회원 도메인 개발 (4) | 2024.10.11 |
---|---|
[Spring Boot] 쇼핑몰 #3 - 엔티티 클래스 개발 (7) | 2024.10.08 |
[Spring Boot] 쇼핑몰 - 환경설정(View, H2 Database, JPA) (1) | 2024.10.05 |
[Spring Boot] REST API - PUT (+ Talend API Tester) (0) | 2024.07.14 |
[Spring Boot] REST API - POST (+ Talend API Tester) (0) | 2024.07.14 |
댓글