我有两个实体问题和问题日志。 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/