728x90
1. 요구사항 분석
- 회원기능
- 회원 등록
- 회원 조회 - 상품 기능
- 상품 등록
- 상품 수정
- 상품 조회 - 주문 기능
- 상품 주문
- 주문 내역 조회
- 주문 취소 - 기타 요구사항
- 상품의 종류는 도서, 음반, 영화가 있다.
- 상품을 카테고리로 구분할 수 있다.
- 상품 주문 시 배송 정보를 입력할 수 있다.
2. 도메인 모델 설계
다대다 테이블은 관계형 DB, 엔티티에서도 거의 사용하지 않는다 따라서 일대다 , 다대일 관계로 풀어냈다. 상품 분류 : 상품은 도서, 음반, 영화로 구분되는데 상품이라는 공통 속성을 사용하므로 상속 구조로 표현했다.
3, 테이블 설계
MEMBER : 회원 엔티티의 Address 임베디드 타입 정보가 회원 테이블에 그대로 들어갔따. 이것은 DELIVERY 테이블도 마찬가지이다.
ITEM : 앨범, 도서, 영화 타입을 통합해서 하나의 테이블로 만들었다. DTYPE 컬럼으로 타입을 구분한다.
4. 연관관계 정리
- 회원과 주문 : 일대다 양방향 관계다. 연관관계의 주인을 정해야 하는데 외래 키가 있는 주문이 연관관계의 주인이다. 그러므로 Order.member를 ORDERS.MEMBER_ID 외래 키와 매핑한다.
- 주문상품과 주문 : 다대일 양방향 관계다. 주문상품이 연관관계의 주인이다. 그러므로 OrderItem.order를 ORDER_ITEM_ID외래 키와 매핑한다.
- 주문상품과 상품 : 다대일 단방향 관계다. OrderItem.item을 ORDER_ITEM.ITEM_ID 외래 키와 매핑한다.
- 주문과 배송 : 일대일 양방향 관계다. Order.delivery를 ORDERS.DELIVERY_ID 외래 키와 매핑한다.
- 카테고리와 상품 : @ManyToMany를 사용해서 매핑한다.
5. 엔티티 클래스
엔티티와 테이블 설계를 완성했다. 이 엔티티를 기반으로 실제 애플리케이션을 개발해보자.
'Spring > JPA' 카테고리의 다른 글
스프링 데이터 JPA (0) | 2023.07.18 |
---|---|
웹 애플리케이션 제작(애플리케이션 구현) (0) | 2023.07.17 |
웹 애플리케이션 제작(프로젝트 환경설정) (0) | 2023.07.17 |
객체지향 쿼리 언어(4) 네이티브 SQL (0) | 2023.07.17 |
객체지향 쿼리 언어(3) QueryDSL (0) | 2023.07.17 |