응용 서비스
- 도메인 객체 ↔ 표현 영역 사이를 연결하는 창구 역할을 한다.
public Result doSomeCreation(CreateSomeReq req) {
// 1. 데이터 중복 등 데이터가 유효한지 검사한다.
validate(req);
// 2. 애그리거트를 생성한다.
SomeAgg newAgg = createSome(req); // 도메인 영역
// 3. 리포지터리에 애그리거트를 저장한다.
someAggRepository.save(newAgg); // 레포지터리 영역
// 4. 결과를 리턴한다.
return createSuccessResult(newAgg); // 반환값의 전
}
응용 서비스가 복잡해진다면..
- 도메인 로직의 일부를 구현하고 있을 가능성이 높습니다.
- 코드 중복이나 로직 분산 등 코드 품질에 부정적 영향을 줄 수 있음.
또한 트랜잭션의 역할도 수행
- 여러 회원을 차단 상태로 변경하는 경우
- 하나의 회원은 차단 상태로 변경하였는데, 나머지 회원을 차단상태로 변경하지 못한 경우
- 데이터의 일관성에 문제가 생길 수 있습니다!
또 다른 역할로는
- 접근 제어
- 이벤트 처리 가 존재하는데.. 이후에 설명하겠다고함
Uploaded by N2T
'도메인주도개발' 카테고리의 다른 글
[DDD] 오프라인 선점 잠금 (0) | 2024.01.25 |
---|---|
[DDD] 오프라인 선점 잠금 관련 LockManager 인터페이스와 관련 클래스 (0) | 2024.01.25 |
[DDD] 도메인 로직을 넣지 않기! (0) | 2024.01.19 |
[DDD] 서비스 레이어에서 공통로직의 분리 방법 (0) | 2024.01.19 |
[DDD] 인터페이스가 필요한가? (0) | 2024.01.19 |