gpt4 book ai didi

domain-driven-design - DDD : Model local identity inside agregate root

转载 作者:行者123 更新时间:2023-12-01 11:55:44 24 4
gpt4 key购买 nike

阅读蓝皮书(Eric Evan 的领域驱动设计)并开始在类似应用程序的简单博客中应用 DDD 概念后,我有以下问题,如何在聚合根内对实体的本地身份建模?

为了简单起见,我有一个简单的博客模型,它具有以下实体和场景:注册用户可以发布帖子,帖子可以关联一个或多个标签,注册或未注册用户可以对帖子发表评论。

在这种情况下,实体是 User、Post 和 Comment,聚合根是 User na Post being comment 是 Post 聚合根内的聚合。

既然评论实体在 Post 中有一个本地标识,我该如何建模它的本地标识? IE。我不能仅仅通过它的属性来区分评论,因为我可以对同一用户发布的具有相同内容的同一帖子有不同的评论...

我首先想到的是帖子评论列表中评论的顺序来标识帖子中的评论,但这在并发环境中变得非常复杂,就像一个 Web 应用程序,两个客户端可以在博客上发表评论,我会碰撞,直到我将它们存储在数据库中。除此之外,我需要保持从存储库恢复评论列表的逻辑,其顺序与帖子保存到存储库的顺序相同......

然后在 Post 中有一个唯一的标识符计数器,并随着每条评论的发布自动增加它,但在并发环境中变得复杂,那么我如何在聚合根中建模本地标识?

谢谢巴勃罗

最佳答案

好问题。来自 Eric Evan's书:

ENTITIES inside the boundary have local identity, unique only within the AGGREGATE.

...only AGGREGATE roots can be obtained directly with database queries. All other objects must be found by traversal of associations.

我认为第二部分很重要。您应该对待 Comment Id 作为本地标识。换句话说,您不应该绕过其聚合根(帖子)检索评论,从外部引用评论等。从技术上讲,Commend Id 可以是数据库生成的相同 AUTOINCREMENT 字段,就像您对 User 和 Post(或任何其他 id来自休眠的生成器)。但从概念上讲,评论将具有本地身份。解决它是聚合根的工作。

关于domain-driven-design - DDD : Model local identity inside agregate root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7559609/

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