数据库中如何存储值对象?

我实际上没有看到任何示例,但我假设它们保存在数据库中的包含实体表中。

我。如果我有一个 Person 实体/聚合根和一个对应的 Person 表,如果它有一个名为 Address 的 Value 对象,Address 值将保存在这个 Person 表中!

这是否有意义的域,我有其他实体,如公司等,有一个地址?

(我目前正在编写一个项目管理应用程序,并试图进入 DDD)

16276 次浏览

可以将值对象存储在单独的表中,原因正如您所描述的那样。但是,我认为您误解了实体与 VOs 的关系——这不是一个与持久性相关的问题。

这里有一个例子:

假设 公司都有相同的 地址邮件。这些语句中哪一个是有效的?

  1. ”如果我修改公司地址 自动获取的地址 这些变化”
  2. ”如果我修改公司地址 不得影响任何人。地址”

如果 1为 true,那么 地址应该是 < em > 实体 ,因此它有自己的表

如果 2为真,则 地址应为 值对象。它可以作为一个组件存储在父实体的表中,也可以拥有自己的表(更好的数据库规范化)。

正如您所看到的,如何保持 Address 与 Entity/VO 语义没有任何关系。

大多数开发人员倾向于首先考虑数据库,然后才考虑其他事情。DDD 不知道如何处理持久性。那要看仓库怎么处理了。您可以将其持久化为 xml、 sql、文本文件等等。实体/聚合/值对象是与域相关的概念。

维杰帕特尔的解释是完美的。