在 DDD 中聚合根和存储库
Aggregate roots and repository in DDD
我刚开始使用 DDD 并遇到聚合根这个词。
我目前的理解是,这是一种对其他互补实体进行引用的父实体。示例:聚合根将为 Employee,它还包含职位、班次、性别和薪水。
我的第一个问题是这种理解是否正确?
其次,我的印象是存储库仅为每个聚合定义。然而,令我困惑的是我们如何检索有关其他实体的信息(例如:职位列表或轮班类型)?
谢谢,
聚合是强制不变量的一致性边界。这意味着聚合内的实体和对象必须在业务规则方面保持一致。
- http://dddcommunity.org/library/vernon_2011/
- http://martinfowler.com/bliki/DDD_Aggregate.html
- https://lostechies.com/gabrielschenker/2015/05/25/ddd-the-aggregate/
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) ?
如果您选择这样做,您可以对数据使用单独的读取模型,并且企业希望以不同的方式查看数据是有道理的。写入数据时需要强制执行的一致性不适用于读取端。 CQRS 是有助于解决此问题的模式 - 您将写入端与读取端分开。
https://lostechies.com/gabrielschenker/2015/04/07/cqrs-revisited
我刚开始使用 DDD 并遇到聚合根这个词。
我目前的理解是,这是一种对其他互补实体进行引用的父实体。示例:聚合根将为 Employee,它还包含职位、班次、性别和薪水。 我的第一个问题是这种理解是否正确?
其次,我的印象是存储库仅为每个聚合定义。然而,令我困惑的是我们如何检索有关其他实体的信息(例如:职位列表或轮班类型)?
谢谢,
聚合是强制不变量的一致性边界。这意味着聚合内的实体和对象必须在业务规则方面保持一致。
- http://dddcommunity.org/library/vernon_2011/
- http://martinfowler.com/bliki/DDD_Aggregate.html
- https://lostechies.com/gabrielschenker/2015/05/25/ddd-the-aggregate/
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) ?
如果您选择这样做,您可以对数据使用单独的读取模型,并且企业希望以不同的方式查看数据是有道理的。写入数据时需要强制执行的一致性不适用于读取端。 CQRS 是有助于解决此问题的模式 - 您将写入端与读取端分开。
https://lostechies.com/gabrielschenker/2015/04/07/cqrs-revisited