可以将根引用聚合为另一个聚合根的非聚合根吗?

时间:2012-11-03 18:27:09

标签: java domain-driven-design

我有三个实体用于此特定场景:

  • 问题(聚合根)
  • QuestionFeedback(非聚合根)
  • QuestionFeedbackCategory(聚合根)

由于QuestionFeedback在一个Question中,QuestionFeedbackCategory是否也可以包含QuestionFeedback对象的列表?或者QuestionFeedbackCategory只需要处理Question对象吗?

2 个答案:

答案 0 :(得分:0)

如果问题和问题反馈都有类别并且假设每个类别只有一个类别,我会这样建模

public class Question {
    ...
    CategoryId categoryId;
    Set<QuestionFeedback> feedback;
    ...
} 

public class QuestionFeedback {
    ...
    CategoryId categoryId;
    ...
} 

public class Category {
    CategoryId id;
    String name;
    String description;
}

你不必把AR本身和#34;放在&#34;另一个AR / VO。您可以只引用其作为id的值对象。

编辑:阅读此处提到的三篇文章http://dddcommunity.org/library/vernon_2011。来自ORM思维模式,我常常对如何建模这些类型的关系感到困惑。

答案 1 :(得分:0)

只有在这些情况下,聚合根才能与外部通信:

  • 通过聚合内的事件
  • 通过构造函数注入

但是在上述所有选项中,不允许使用引用只能使用数组(水合对象)。