엔티티 설정
내가 만든 요구사항은 아니고 책에서 제공해주는 엔티티를 가지고 진행할 예정
요구사항 분석
회원 기능
회원 등록, 회원 조회
상품 기능
상품 등록, 상품 수정, 상품 조회
주문 기능
상품 주문, 주문 내역 조회, 주문 취소
기타 요구사항
상품의 종류로는 도서, 음반, 영화가 존재 상품을 카테고리로 구분 가능 상품 주문 시 배송 정보 입력 가능
도메인 모델 설계
회원(Member) : 이름과 주문한 상품들, 그리고 임베디드 타입인 Address를 가짐
주문(Order) : 한 번 주문 시 여러 상품을 주문할 수 있으므로 주문과 주문 상품(OrderItem)은 일대다 관계. 주문은 상품을 주문한 회원과 배송정보, 주문 날자, 주문 상태를 가지고 있음 주문 상태는 열거형
주문상품(OrderItem) : 주문한 상품 정보와 주문 금액(orderPrice), 주문 수량(count) 정보를 가지고 있음
상품(Item) : 이름, 가격, 재고수량(stockQuantity)을 가지고 있다. 상품을 주문하면 재고 수량이 줄어들고 상품의 종류로는 도서, 음반, 영화가 있고 각각의 속성은 다 다름
배송(Delivery) : 주문 시 하나의 배송 정보를 생성한다. 주문과 배송은 일대일 관계
카테고리(Category) : 상품과 다대다 관계를 맺음
주소(Address) : 값 타입(임베디드). 회원과 배송(Delivery)에서 사용
연관관계 정리
회원과 주문 : 일대다 관계이고 외래 키가 있는 주문이 연관관계의 주인, Order.member-ORDERS.MEMBER_ID
주문상품과 주문 : 다대일 양방향 관계이고 주문 상품이 연관관계의 주인, OrderItem.order-ORDER_ITEM.ORDER_ID
주문상품과 상품 : 다대일 단방향 관계, OrderItem.order-ORDER_ITEM.ORDER_ID
주문과 배송 : 일대일 양방향 관계, Order.delivery를 ORDERS.DELIVERY_ID 외래 키와 매핑
카테고리와 상품 : @ManyToMany를 사용해서 매핑
엔티티 클래스 구현
Last updated
Was this helpful?