gpt4 book ai didi

domain-driven-design - 您如何使用 DDD 中的实体持久化/恢复聚合根?

转载 作者:行者123 更新时间:2023-12-04 08:20:08 24 4
gpt4 key购买 nike

基于领域驱动设计中的以下定义:解决软件核心的复杂性,

一个聚合是:
一组关联对象,为了数据更改而被视为一个单元。外部引用仅限于 AGGREGATE 的一个成员,指定为根。一组一致性规则适用于 AGGREGATE 的边界。

我不认为聚合根应该包含对存储库的引用。由于聚合根是唯一应该持有对其实体和聚合的引用的根,它们应该是私有(private)的。

我的存储库如何保留和恢复这些私有(private)数据?

编辑:

让我们以经典的 Order、OrderLines 为例。

订单是聚合根。

它的线条是实体。

由于聚合根(订单)是唯一允许保存对其实体(订单行)的引用的对象,我不明白如何从存储库中保留顺序行。

最佳答案

据我了解聚合根,它必须是访问其范围内所有实体的地方。这意味着,只要使用传统的 ORM,您就可以通过 Order 访问 OrderLines。

此外,不禁止任何人获取对根内部实体的引用,但这些引用必须是易变的(即短暂的),并且您必须通过聚合根获得重新引用。

就 DDD 而言,您将使用存储库来隐藏数据访问,工厂可能反过来使用工厂来组装对象。工厂非常了解对象的内部结构,并且必须能够构建一个新对象或从存储库移交的数据中恢复一个对象。

也许您还可以研究 CQRS + Event Sourcing,它提供了一种不同的方法来持久化实体。

关于domain-driven-design - 您如何使用 DDD 中的实体持久化/恢复聚合根?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com