我正在学习Eric Evans的领域驱动设计。聚合概念对我来说很清晰并且我觉得它非常有趣。现在我在考虑一个聚合的例子,例如:
银行账户(1)---->(*)交易。
BankAccount
BigDecimal calculateTurnover();
BankAccount是一个聚合根。为了计算营业额,我应该遍历所有交易并将所有金额相加。Evans认为我应该使用仓储库只加载聚合根。在上述情况下,可能会有几千个交易,我不想一次性将它们全部加载到内存中。
在仓储模式的背景下,聚合根是客户端代码从仓储库中加载的唯一对象。
仓储库封装了对子对象的访问 - 对于调用方来说,它会自动加载它们,要么在加载根对象时同时加载它们,要么在实际需要它们时进行懒加载。
您如何建议在DDD聚合中实现calculateTurnover?