在最后几天,我正在申请申请/学习DDD。 DDD的原则之一(请纠正我,如果我错了)是实体的所有更改都应该通过聚合根(AR)进行,并且AR应该加载他的子实体。通过这种方式可以验证聚合一致性。 只有一点点细节困扰着我。我无法理解DDD如何处理性能问题。想象一下,我有一个订单(AR),比如20000,30000的OrderLine。存在性能问题迫切需要加载很多子记录。将订单称为AR,您可以想象可能发生这种情况的另一种情况。 我很期待看到你对这个主题的看法。
答案 0 :(得分:3)
DDD并非始终不受技术考虑。如果您的AR可以包含大量子实体,请考虑您是否可以自己创建子实体AR。必须在考虑最终一致性的同时做出这一决定。
在您提供的示例中,考虑订单AR是否确实需要首先引用OrderLine实体以保持完整性。如果是这样,请考虑使OrderLine自己成为AR,在这种情况下,您可能必须处理最终的一致性。当然,如果使OrderLine成为AR,您的应用程序逻辑将会发生变化,因为需要在OrderLine上执行的操作必须通过OrderLineRepository来访问OrderLine而不是通过Order AR。