- 도메인 주도 설계의 사실과 오해 강의를 바탕으로 구현
- 강의 예시 코드를 기반으로 구현
- 애그리게이트 그룹을 정의한다.
- 애그리게이트 루트 단위로 관리한다. (Query, Command)
- 리포지토리는 애그리게이트 루트만 가진다.
- 애그리게이트 그룹간에는 이벤트로 통신한다.
- 엔티티가 가진 책임을 구분하여 값 객체 및 값 컬렉션을 만들어 위임한다.
- 사용자
- 메뉴
- 가게
- 장바구니
- 주문
- 사용자
- 사용자 (root)
- 장바구니
- 장바구니 (root)
- 장바구니 옵션
- 장바구니 옵션 그룹
- 장바구니 상품
- 메뉴
- 메뉴 (root)
- 메뉴 옵션
- 메뉴 옵션 그룹
- 주문
- 주문 (root)
- 주문 상품
- 가게
- 가게 (root)
- 가게 운영 시간
- UserJpaRepository
- CartJpaRepository
- MenuJpaRepository
- OrderJpaRepository
- StoreJpaRepository
- 단계1. 애그리게이트 그룹내에서만 조회/변경이 일어나도록 구현
- 단계2. 애그리게이트 그룹간에 이벤트 통신이 일어나도록 구현
- 값 객체
- 메뉴 옵션
- 주문 메뉴 옵션
- 주문 옵션
- 장바구니 옵션