Event Sourcing과 함께 CQRS 패턴을 사용하여 첫 번째 응용 프로그램을 구현하고 싶습니다. 골재 뿌리 생성이 올바르게 처리되어야하는지 궁금합니다. 누군가 CreateItem 명령을 보낸다고 가정 해 봅시다. 어떻게 처리해야합니까? ItemCreated 이벤트를 어디에 저장해야합니까? 새로운 아이템의 첫 번째 이벤트로? 아니면 모든 항목을 집계하고 해당 이벤트 목록이 ItemCreated 이벤트로만 구성된 일종의 ItemList 엔티티가 있어야합니까?
Udi Dahan 은 집계 루트를 작성하지 말고 항상 일종의 페치 메소드를 사용 하도록 제안 합니다. 그러나 새롭고 확실하게 ID가 할당되지 않은 것을 가져올 수있는 방법. 나는 그 아이디어를 이해하고 있으며 새로운 객체는 0 개의 이벤트로 구성된 상태를 가진 객체라고 생각하는 것이 합리적입니다. 그러나 어떻게 사용해야합니까? 내 리포지토리에 고유 한 방법이 있어야합니까, getNewItem()
아니면 대신 get(id)
방법을 받아 들여야 Optional<ItemId>
합니까?
편집 : 파고 얼마 후 배우를 사용하여 앞에서 언급 한 패턴의 흥미로운 구현 을 발견했습니다 . 작성자는 집계를 작성하는 대신 새로 작성된 UUID를 사용하여 일종의 저장소에서 집계를 검색합니다. 이 접근 방식의 단점은 일시적인 불일치 상태를 허용한다는 것입니다. 또한 delete
그러한 접근 방식으로 방법을 구현할 수 있는지 궁금합니다 . 삭제 된 이벤트를 집계의 이벤트 목록에 추가하기 만 하시겠습니까?