【问题标题】:Aggregate for one entity为一个实体聚合
【发布时间】:2015-02-23 21:12:59
【问题描述】:
在域驱动设计中,如果我想使用存储库,我需要对其进行聚合——据我所知。
所以我有一个用户,它有 id、登录名、电子邮件和密码。用户是具有唯一 ID 的域实体。
当我想将一个用户添加到用户存储库时,我是否应该首先构建一个只有聚合根的聚合,它是我的用户实体,仅此而已?在这种情况下,它看起来像是用户的代理,不需要层。
或者我在这里错过了什么?也许用户不是实体,即使它看起来像这样。或者我可以将实体直接放入存储库?
【问题讨论】:
标签:
entity
domain-driven-design
aggregate
ddd-repositories
aggregateroot
【解决方案1】:
聚合根 (AR) 是一个实体,拥有作为自己聚合根的实体是很常见的。
您的User 实体只是一个聚合根。您不需要额外的具体类。
【解决方案2】:
在域驱动设计中,如果我想使用我需要的存储库
它的聚合 - 据我了解。
我想提出的重要一点是,我们不为存储库创建聚合,我们创建存储库是因为我们需要持久化聚合。
存储库处理整个聚合,不多也不少。它们保留了应该定义聚合的事务边界。
当我想将用户添加到用户存储库时,我应该先构建一个
仅聚合作为我的用户实体的聚合根,什么都没有
更多的?在这种情况下,它看起来像是 User 的代理,不需要层。
单实体聚合绝对没有错。在这种情况下,实体将是聚合根和聚合的整体。
我建议您阅读 Vaughn Vernon 的 Effective Aggregate Design 系列。