3
votes

I just started on DDD and encounter the term aggregate roots.

My current understanding is that this is kind of a parent entity that hold reference to other complementary entity. Example : aggregate roots will be Employee that also contain position, shift, gender, and salary. My first question will be whether this understanding is correct ?

Secondly, I get an impression that repository is defined only for each aggregate. Yet, it puzzles me how we could retrieve information regarding other entity (Ex: list of positions or shift type) ?

Thank you,

1
For a complete tutorial including a modelling example and coding, you can also read my DDD Decoded: Aggregate trilogy.MikeSW
Thanks a lot Mike, definitely will check your page.hollycrab

1 Answers

5
votes

Aggregates are consistency boundaries to enforce invariants. This means that the entities and objects inside the aggregate must remain consistent together with regards to the business rules.

Secondly, I get an impression that repository is defined only for each aggregate. Yet, it is puzzle me how we could retrieve information regarding other entity (Ex : list of positions or shift type) ?

You can have a separate read model over your data if you choose to do so and it makes sense that the business wants to view the data in a different way. The consistencies you need to enforce when you are writing data do not apply on the read side. CQRS is the pattern to help with this - you separate your write side from your read side.

https://lostechies.com/gabrielschenker/2015/04/07/cqrs-revisited