2014-10-31 3 views
1

DDD에서 지금까지 읽은 모든 것은 다른 엔티티를 캡슐화하는 엔티티 만 루트 집합체라는 것을 의미합니다. 같은 상황에서DDD : 모든 골재 뿌리에는 어린이가 필요합니까?

무엇에 대해 :

WorkOrder 
- idManufacturer 
- WONumber 
- Description 

Manufacturer 
- idSelf 
- Name 

WorkOrder 참조 제조업체 있지만, 다른 엔티티가 나는 두 루트 엔티티를 고려할이 경우 WorkOrder를 참조 할 수도 있지만, 제조업체가 아니므로 WorkOrder의 자녀가되지 않을 것 집합 ...

이 맞습니까?

+0

귀하의 경계 상황은 무엇이며 사용자가 제조업체와 직접 상호 작용할 수 있습니까? –

+0

어쩌면 [내 게시물] (http://www.sapiensworks.com/blog/post/2014/10/31/DDD-Identifying-Bounded-Contexts-and-Aggregates-Entities-and-Value-Objects.aspx) 집계 및 집계 루트 (AR)를 식별하는 방법을 더 잘 이해할 수 있도록 도와줍니다. Btw AR은 아이들의 개념과 관련이 없다. – MikeSW

답변

1

나는 누군가가 아이가없는 개체가 집계의 뿌리가 될 수 있다고 나에게 말하면서 DDD로 전구의 순간을 한 번 보았습니다.

특히 누군가가 "집계 만 뿌리"라고 말한 경우.

예에서 집계 루트는 WorkOrderManufacturer입니다. WorkOrder에 대한 저장소가 있고 Manufacturer에 대한 저장소가 있습니다.

1

실제로 대부분 값 개체가있는 집계가 있습니다. 어린이 연예인을 가진 증후군은 드뭅니다. DDD Vaughn Vernon을 구현하는 빨간 책을 읽으면서 작은 집계 규칙을 설명합니다.

0

집합 루트의 작업은 불변량을 캡슐화하고 적용하는 것입니다. 다른 객체로 구성 될 수 있지만 모두 AR을 통해 상호 작용합니다. 집합체에 대해 기억해야 할 중요한 점은 선택한 지속성 메커니즘과 독립적이어야한다는 것입니다. 집계의 대부분은 전혀 의존성이 없어야합니다!

내가 잘못 생각할 수도 있지만 idManufacturer는 외래 키입니다. 이 경우 을 제안합니다 (항상 그런 것은 아니지만). 캡슐화되지 않았습니다. 내 머리를 들기 위해 잠시 시간을 들여야했던 것은 집계 내의 필드가 비공개라는 것입니다. 이렇게하면 상태를 저장하는 방법과 데이터를 UI에 저장하는 방법이 달라집니다. 거기에 많은 방법이 있습니다. 내가 선호하는 방법은 Event Sourcing과 CQRS를 사용하는 것이다. 그러면 집계에서 생성되는 이벤트에서 UI를 만들 수 있습니다. 또한 이러한 이벤트를 유지하고이를 사용하여 집계를 재구성 할 수 있습니다.

나는 내 블로그에서 더 깊이 들어갔다. How to Build an Aggregate Root을보고 싶을 수도있다! . here에서 찾을 수있는 CQRS 및 이벤트 소싱을 사용할 때 마스터 세부 정보 화면을 작성하는 데 유용한 게시물을 찾을 수도 있습니다!

도움이 되었기를 바랍니다.

관련 문제