2

在最后几天,我正在制作一个示例应用程序来申请/学习 DDD。DDD 的原则之一(如果我错了,请纠正我)是对实体的所有更改都应该通过聚合根(AR)进行,并且 AR 应该与他的子实体一起加载。这样更容易验证聚合一致性。只有一个小细节让我感到困扰。我无法理解 DDD 如何处理性能问题。想象一下,我有一个 Order(AR),比如说,20000、30000 个 OrderLine。急切加载大量子记录时会存在性能问题。将 Order 作为 AR 说,您可以想象其他可能发生这种情况的场景。我期待着阅读您对这个主题的意见。

4

1 回答 1

5

DDD 并不总是没有技术考虑。如果您的 AR 可以包含大量子实体,请考虑是否可以让子实体自行成为 AR。必须在考虑最终一致性的同时做出此决定。

在您提供的示例中,考虑 Order AR 是否真的需要首先引用 OrderLine 实体以保持完整性。如果是这样,请考虑让 OrderLine 本身成为 AR,在这种情况下,您可能必须处理最终的一致性。当然,如果您将 OrderLine 设置为 AR,您的应用程序逻辑将发生变化,因为需要在 OrderLine 上执行的操作必须通过 OrderLineRepository 才能访问 OrderLine,而不是通过 Order AR。

有关这方面的更多信息,请查看Vaughn Vernon 的有效聚合设计

于 2012-08-29T18:23:08.940 回答