java - DDD 中的聚合对象,这是潜在的聚合吗?

标签 java jakarta-ee domain-driven-design

我有两个实体问题和问题日志。 question 显然代表一个问题,而 QuestionLog 代表一个实体,用户可以报告一个特定的问题。例如,如果问题是错误的,质量差等。

现在从我读到的内容来看,聚合对象是唯一具有存储库的对象,并且如果删除了它所附加的问题,QuestionLog 对象不应该在我的系统中,我认为 Question 将是聚合根。

在这种情况下这样做是否有意义?

如果我想要用户提交的问题日志列表怎么办?然后我会制作一个 JPQL 来检索用户提交的所有 QuestionLog,还是会破坏它的预期方式?我是否应该取而代之检索一个问题列表,该列表具有该特定用户附加的问题日志,然后遍历所有问题并显示每个问题日志的属性?

因为必须允许在 Question 类之外使用 QuestionLog 对象?我对这些限制及其现状感到有些困惑。

最佳答案

因为 QuestionLog 没有相应的 Question 就没有意义,所以你是对的 - 它不是聚合根。

所有与 QuestionLog 相关的操作都应该通过 Question 聚合。

如果你想要一个用户的 QuestionLog 列表,你需要在 Question 上定义一个聚合 GetQuestionLogsForUser(user aUser)方法。您不必获取用户的所有问题,但可以通过聚合控制对QuestionLog 的访问。

您可以在聚合根之外使用 QuestionLog 对象,但对其执行的任何操作都应通过聚合根完成,尤其是持久性问题。

关于java - DDD 中的聚合对象,这是潜在的聚合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13083890/

相关文章:

domain-driven-design - CQRS & DDD - 使用 cqrs 读取模型的域模型业务规则验证

java - 从 Eclipse 的组织导入中排除包

java - Java中如何求两个给定整数之间的数字之和

java - 显示ArrayList(EJB session +Servlet+JSP,无JDBC)

asp.net-mvc - NHibernate可以使用纯DDD方法吗?

c# - 使用 ViewModel 的 Winforms 数据绑定(bind)

java - AlphaComposite Transparency 重绘重叠成黑色

java - esper 根据事件开始时间固定窗口

java - 按 Java 中第一个找到的字符串拆分

java - 线程中的异常 "main"org.hibernate.MappingException : invalid configuration in hibernate4