整体聚集根

问题描述 投票:1回答:2

我们如何处理下面有大量聚集体的聚集体根?

说我有一个Person作为我的聚合根,并且有很多实体代表一个人可以进行的所有各种活动和事情。这些中的每一个彼此明显地分开并且具有它们自己的生命周期,并且可以存储在不同的数据库中。它们都取决于Person的生命周期,但是,如果曾经删除Person,则也都需要删除它们,因为它们不再相关。

如果Person是所有这些对象的集合根,如何避免拥有一个试图覆盖所有这些对象的庞大存储库?

[如果这些东西都是它们自己的聚合根并且可以拥有自己的存储库,就可以了,如果要删除Person,我要处理确保级联删除的整个问题?

domain-driven-design aggregateroot
2个回答
1
投票

“所有权”并不一定意味着聚合。

例如,Customer“拥有”一个或多个Order实例,但由于它们具有自己的生命周期,因此不属于Customer集合。

级联删除可以由您的数据库技术强制执行,尽管这是另一种讨论。一个人可能很少需要或想要从数据库中删除实例。禁用Customer可能是更可行的方法。当处理审计和/或立法等需要在最短时间段内存储数据的问题时,这甚至是一个更大的问题。存档是另一种选择。


1
投票

An Aggregate Root提供了一种控制对Domain中的实体的访问的方法。这不一定意味着您应该始终拥有一个“聚合根”。什么是聚合根应该来自您的业务需求,而不一定是它们如何存储在数据库中。

© www.soinside.com 2019 - 2024. All rights reserved.