全局访问对象;何时使用域驱动设计存储库

时间:2013-09-18 15:56:14

标签: java domain-driven-design ddd-repositories

我一直在遵循DDD原则(遵循Eric Evans关于这个主题的书)但是我最近开始重新阅读这本书,并注意到我似乎偏离了repositories的一个原则。

  

“对于需要全局访问的每种类型的对象,请创建一个对象   这可以提供内存收集的错觉......“

我误解了这一点,因为我为每个 repository创建了一个aggregate,并且发现这很适合我。即使aggregate本身与另一个aggregate相关联,也只是在创建repository期间(通常在工厂内)引用相关聚合entity的简单问题。 / p>

我发现这样做的好处是在我的存储库中执行缓存等操作时。它还真正简化了对象创建/持久性与域之间的鸿沟。

有人可以举个例子说明这种“全球访问”不适合帮助我理解我出错的地方。

1 个答案:

答案 0 :(得分:0)

我相信你使用了错误的术语......聚合不能包含其他聚合。您可能在这些聚合之间存在关联。

在任何情况下,每个聚合都应该有存储库,否则你做错了。此外,最好使用存储库来加载聚合而不是来自其他聚合的关联。如果你保持联系(可能是因为你的ORM很容易)你没有完全拆分聚合。