(WebClient - frontend) - Controller - Service - Repository - DB
예를 들어 Project Package 이면
- Project-Service
- Project-Predicate
- Project-EntityConverter
- Project-InfoCreator
- DTO들
기본적으로 DDD에서 제시하는 Business Logic 을 갖는다. 이 외의 기능을 하기위해 위임을 한다.
- Business Logic 을 갖는다.
- CrudService 를 상속 받는다.
- to Entity 나 to DTO 에 관련된 일은 ProjectEntityConverter에게 위임한다.
- Predicate를 만들기 위해 ProjectPredicate에게 위임한다.
- toSearchEntity() - DTO에 있는 데이터를 Entity에게 ModelMapper를 이용하여서 넣어준다.
- toCompleteEntity() - Repository에서 save 할 수 있도록 데이터를 다 채운다. - 데이터는 ProjectInfoCreator에게서 받아온다.
- ModelMapper : Entity 와 DTO 사이 데이터 이동을 자동으로 함
- QueryDSL : select 관련 query를 쉽게 보낼수 있음. Predicate를 사용하여 2^n만큼의 combination의 경우의 수를 n만큼의 코드로 변환가능