DDD中的存储库类

时间:2012-02-15 21:34:36

标签: java java-ee domain-driven-design

我正在尝试关注DDD,我有一个Question类和一个Feedback类(等等)。我希望能够计算出问题的数量,反馈的数量以及被认为是元操作的许多其他事情。

这些“meta”方法是否应该与属于该类的其他方法位于同一个存储库中,或者它们是否应该位于MetaRepository中,在该MetaRepository中您有不同的元方法来查询数据库(在这种情况下,所有类都将被混合) ?

4 个答案:

答案 0 :(得分:9)

DDD中没有任何内容禁止每个聚合使用多个存储库。您可以简单地为基本查询和生命周期方法(IQuestionsRepository)创建一个存储库,并为您称为“元”或“统计”目的的单独存储库(IQuestionsStatistics)。这适用于较大的域,其中 one-repository-per-aggregate 原则可能导致“方法爆炸”和SRP违规。 DDD之后不应违反基本的OOP原则。

答案 1 :(得分:1)

对我来说,每个存储库负责计算其元素,它是getById,getAll ...(标准方法)中的一种方法。

答案 2 :(得分:0)

这些问题(“有多少反馈?”)以及他们引用您域名重要部分的数量?

如果是这样,它们似乎是合理的查询放在您的存储库中。毕竟,您的存储库的工作是回答有关其包含的聚合的域相关问题。

如果没有,例如如果这只是偶然的东西,可能是为了向用户显示,那么这些问题可能完全属于域层之外的应用服务。

答案 3 :(得分:0)

我会坚持每个域模型类更多的单个存储库,或者使用通用存储库

我个人从未见过有人为了你描述的目的而创建MetaRepository