我还没有真正看到任何示例,但我假设它们保存在数据库的包含实体表中。
IE。如果我有一个 Person 实体/聚合根和一个相应的 Person 表,如果它有一个名为 Address 的值对象,那么 Address 值将保存在这个 Person 表中!
这对于我拥有其他实体(例如公司等)的域是否有意义?
(我目前正在编写一个项目管理应用程序并尝试进入 DDD)
我还没有真正看到任何示例,但我假设它们保存在数据库的包含实体表中。
IE。如果我有一个 Person 实体/聚合根和一个相应的 Person 表,如果它有一个名为 Address 的值对象,那么 Address 值将保存在这个 Person 表中!
这对于我拥有其他实体(例如公司等)的域是否有意义?
(我目前正在编写一个项目管理应用程序并尝试进入 DDD)
出于您所描述的原因,可以将值对象存储在单独的表中。但是,我认为您误解了实体与 VO - 这不是与持久性相关的问题。
这是一个例子:
假设Company和Person都具有相同的邮件地址。这些陈述中哪些认为有效?
如果1为真,则Address应该是一个Entity,因此有它自己的表
如果2为真,则Address应该是一个Value Object。它可以作为组件存储在父实体的表中,也可以拥有自己的表(更好的数据库规范化)。
如您所见,Address 的持久化方式与 Entity/VO 语义无关。
大多数开发人员倾向于先考虑数据库,然后再考虑其他任何事情。DDD 不知道如何处理持久性。这取决于存储库来处理它。您可以将其保存为 xml、sql、文本文件等。实体/聚合/值对象是与域相关的概念。
Vijay Patel 的解释是完美的。