gpt4 book ai didi

persistence - DDD : Persisting aggregates

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

让我们考虑典型的 订购 订单商品 例子。假设 订单商品 的一部分订购 聚合,只能通过订单添加。所以,添加一个新的 订单商品 订购,我们必须通过 Repository 加载整个 Aggregate,向 添加一个新项目订购 对象并再次持久化整个聚合。

这似乎有很多开销。如果我们的 订购 有 10 订单商品 ?这样,只是为了添加一个新的订单商品 ,不仅要读10 订单商品 ,但我们也应该重新插入所有这些 10 订单商品 再次。 (这是 Jimmy Nillson 在他的 DDD 书中采用的方法。每次他想要持久化一个 Aggregate 时,他都会清除所有的子对象,然后再次重新插入它们。这可能会导致其他问题,因为 child 的 ID 是由于数据库中的 IDENTITY 列而每次都更改。)

我知道有些人可能会建议在聚合根上应用工作单元模式,以便它跟踪已更改的内容并仅提交这些更改。但这违反了持久性无知 (PI) 原则,因为持久性逻辑正在泄漏到域模型中。

以前有人想过这个吗?

莫什

最佳答案

这不一定是问题,一些 ORM 支持惰性列表。
例如
您可以加载订单实体并将项目添加到 Details 集合中,而无需实际实现该列表中的所有其他实体。

我认为 N/Hibernate 支持这一点。

如果您正在编写自己的实体持久性代码而没有任何 ORM,那么您就很不走运了,您将不得不重新实现与 ORMappers 免费提供的相同的脏跟踪机制。

关于persistence - DDD : Persisting aggregates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2627772/

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