#Mybatis 환경에서 DDD 데모 프로젝트
##프로젝트 개요
- mybatis 환경에서 DDD를 구현하기 위한 여러가지 패턴의 아이디어를 데모로 구현한다.
- 아이디어가 있다면 버전 패키지를 만들고 구현해볼 수 있다.
##기술 스택
- Java 11
- h2 in-memory
- mybatis
- Spring Data JDBC
- Spring Boot 2.6.1
- Gradle Project
- Lombok
- RestAssured
###데모 도메인 소개
- Maker(제조사), Brand(브랜드), Series(시리즈)로 구성
- 제조사->브랜드->시리즈 로 단반향으로 구현
- 제조사->브랜드 는 일대다 관계
- 브랜드->시리즈 는 일대다 관계
- 제조사, 브랜드는 수정은 가능하나 삭제될 수 없다. 시리즈만 삭제 가능.
###V1
- 도메인 모델 패턴으로 비지니스 로직은 도메인에 있다고 가정(실제 비즈니스로직은 없지만..)
- 서비스에서 각 도메인에 해당하는 Repository 로 저장하고 수정고 삭제한다.
- 수정될때, 업데이트될 제조사나 브랜드나 시리즈는 식별자(id)가 들어온다.
- 수정될때, 추가될 브랜드나 시리즈는 식별자(id)가 없다.
- 수정될때, 삭제될 시리즈는 기존 브랜드에는 존재하나 요청한 브랜드에는 존재하지 않는다.
###V2
- V1에서 서비스에서 실제 데이터를 어디에 어떻게 저장할지, 수정할지, 삭제할지 결정하기 때문에 해당 책임을 AggregateRepository에 위임한다.
- Aggregate 단위로 추가, 수정, 삭제, 조회 되야한다.
- V1에서는 이미 추가, 조회는 Aggregate 단위로 구현되어 있음.
- 비즈니스가 추가되면 Aggregate root인 Maker를 통해 수행되야한다.