JPA聚合根方法

时间:2018-08-07 14:43:25

标签: java jpa aggregateroot

我将以博客帖子为例。

BlogPost实体是一个聚合根,它包含一个BlogPostComment集合。 很好,因为没有父博客帖子就无法存在帖子评论。 BlogPostComment会处理BlogPost上的每项操作,或者由管理BlogPost实体的服务来处理。

但是,通过这种方法,每次我想添加评论时,我都必须检索所有博客文章信息。每次我要删除评论时,我都必须检索所有博客文章信息。等等

因此,第一个也是最明显的解决方案是提供单独的服务以在BlogPostComment上运行。但这将违反发表评论的概念。您不应该只对注释进行操作。

什么是正确的方法?

1 个答案:

答案 0 :(得分:1)

我认为将评论从文章中拆分出来是可以接受的,因为可能会有大量评论。如果可以将注释组织/呈现为线程,则线程可能是良好的聚合根。然后,线程可以执行诸如计算注释的嵌套深度以协助渲染的操作。这样,该逻辑可以位于线程的“最小范围”内,而不是本文对象逻辑的一部分。

这是设计决定。随着模型的发展,它们可能会发生变化。将模型分解成可以有效使用的可管理部分,就是处理代码并在变得笨拙时对其进行重构