【发布时间】:2021-04-12 07:28:00
【问题描述】:
我有一个关于聚合根的持久性的问题。
就我而言,我有一个 Calendar 聚合。在日历中的每一天(无限天)我都可以拥有一个或多个Meetings。
在我看来,将 Meeting 实体移动到 Calendar 聚合中是不可行的,因为这将要求我在加载日历时始终获取所有会议。
相反,我想出了一个 CalendarDay 聚合,每天跟踪 Meetings。
现在我的问题是:CalendarDay 实体实际上并没有额外的元数据,它只是用来在一天内处理不变量。那么,有必要在数据库中存储这样一个CalendarDay吗?我可以通过为其分配一个由calendarId 和特定date 组成的复合ID 来简单地使其“虚拟”。
但是,我会为其创建一个存储库,该存储库始终为给定的calendarId 和date 返回一个CalendarDay。如果当天没有会议,会议将只是一个空列表。
这是您会在 DDD 中做的事情,还是某种数据存储中聚合根的实际持久性是强制性的?
【问题讨论】:
-
您的用户不需要查看一个日历日的会议吗?如果您的聚合是 CalendarDay,那么如果您当天的不变量适用,例如特定时间只有一次会议,那么您应该将其保存在数据库中,然后如果您的用户需要查看当天的日历,则再次获取一个 CalendarDay
标签: aggregate domain-driven-design persistence data-modeling