存储库应该进入哪一层?

cho*_*obo 6 domain-driven-design ddd-repositories repository-pattern

存储库类应该进入哪一层?域名或基础设施?

Jon*_*und 18

存储库接口是域的一部分.接口的实际实现应该是基础结构的一部分.


Arn*_*psa 2

我想这取决于你将如何依赖他们。

问题是 - 您是否允许自己使用域内部的存储库?
如果是这样 - 那么你就被迫把它们放进去。

我自己喜欢将它们放在域之外。所以 - 事物的典型生命周期看起来像这样 =>

UI => 控制器 => 从存储库检索聚合根 => 通过聚合根调用逻辑 => 如果创建了新的聚合根,请将其添加到存储库。

有时,控制器调用应用程序服务,除了检索根并调用其上的函数之外,还执行一些其他操作。但想法是相同的——域对持久性一无所知。


虽然(据我所知)将存储库放入域(或至少是它们的抽象)中没有任何问题,但它使您的域更加了解持久性。有时这可以解决问题,但一般来说 - 这肯定会让您的领域变得更加复杂。

使用对您来说更自然的方式,并随时准备改变您的方式。