Blog

도메인 주도 개발 시작하기(5)

도메인 주도 개발 시작하기(5)

JPA 와 관련된 부분은 생략한다.

5-1. 시작에 앞서

CQRS (Command and Query Responsibility Segregation)
명령 (command) 모델과 조회 (query) 모델을 분리하는 패턴
명령 모델
상태를 변경하는 기능을 구현
조회 모델
데이터를 조회하는 기능을 구현
도메인 모델은 명령 모델로 주로 사용한다

5-2. 검색을 위한 스펙

검색 조건을 다양하게 조합해야 할 때 사용할 수 있는 것이 스펙(Specification) 이다
스펙은 애그리거트가 특정 조건을 충족하는지를 검사할 때 사용하는 인터페이스이다
예시 코드
만약 Repository 가 메모리에 모든 애거르기터를 보관하고 있다면 내부적으로 처리할 수 있겠지만, 실제로는 이렇게 구현하지 않는다.
모든 애그리거트 객체를 메모리에 보관하기도 어렵고, 설사 메모리에 다 보관할 수 있다고 하더라도 조회 성능에 심각한 문제가 발생한다.