DDD - 如何在 NoSql 数据库中存储聚合

Kri*_*ris 5 domain-driven-design ddd-repositories mongodb

当前项目需要我们将域对象持久化在 NoSQL 数据库中,例如 mongoDB。在许多示例(包括 Eric Evans、Vaughn Vernon)中,域对象被序列化并直接持久化到 mongoDB。

我们希望通过在我们的域对象中没有任何注释来避免将域层与持久性相关信息混合在一起。我们还担心将来会通过更改域对象来破坏持久化数据。

我们得出的结论是,我们需要某种 DTO 在域对象和持久数据之间进行转换。

你们中有人遇到过这种情况的好解决方案吗?

all*_*tej 3

是的。您的领域模型应该不知道持久性。所以你需要一个 DTO 或者我所说的数据模型(除了域模型和视图模型)。您的数据模型将在持久化到数据库之前映射到域模型。这种映射在插入和更新操作中非常常见。对于只读操作(报告等),您可以绕过从数据模型到域模型的映射。这将阻止加载域模型的整个对象图。这广泛应用于读写命令分离的 CQRS 架构模式。