repository - 领域驱动设计和聚合引用

标签 repository domain-driven-design aggregateroot aggregates

我正在设计领域模型,但有些地方似乎不太对。

我从一个主聚合开始。它引用了其他聚合,而那些其他聚合也引用了更多聚合。我可以从主聚合开始遍历孔域模型。

我看到的问题是我将在内存中保存聚合的所有实例。

这样的设计好吗?我可以通过延迟加载来解决内存问题,但我认为我有更深层次的问题。

我还有一个关于聚合引用的问题。我应该延迟加载对其他聚合的引用吗?如果是这样的话,我几乎永远不会使用他们的存储库。可以吗?

最佳答案

在聚合根 (AR) 之间直接引用会导致延迟加载无法解决的问题。此外,它强制所有连接的 AR 都在同一个数据库中,并且使得推理和执行不变量变得更加困难,而这正是 AR 的主要目的。最好限制或消除 AR 之间的直接引用。了解聚合设计的重要资源是 series of articles通过 Vaughn Vernon .基本思想是让您的 AR 精简和专注,同时牢记它们的功能 - 强制执行业务约束并围绕根实体建立边界。如果一个 AR 需要来自另一个 AR 的数据来执行其工作,则该数据可以由应用程序服务通过存储库提供给它。此外,如果仅需要引用来满足 UI 要求,请考虑使用 read-model pattern .

关于repository - 领域驱动设计和聚合引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11631524/

相关文章:

maven - 即使 mvn 包存在于我的远程存储库中,它也因缺少必需的 Artifact 而失败

git - 在 Gerrit 代码审查中更改消息

java - Controller 和facade之间的通信,转换请求=> dto

wpf - DDD 中领域层和表示层共享的业务逻辑应该放在哪里?

asp.net-mvc-3 - 获取所有聚合根实体子实体?

c# - 不使用 ORM 持久化 Order AggregateRoot

git - 将 git 存储库历史的一部分移动到另一个存储库

android - repo 初始化致命 : error unknown url type

java - Spring JPA,更新实体属性时的附加数据库操作

transactions - 每个事务的多个聚合根实例