存储库&工作单元设计模式

时间:2014-10-31 15:19:54

标签: repository-pattern unit-of-work repository-design

这可能更多地是关于个人偏好而不是任何事情,但我一直在尝试使用存储库和工作单元模式,但我已经看到了非常不同的用途,并想知道哪个更好'以及为什么

使用1:
在此用途中,将存储库放入工作单元

使用2:
在这种用途中,工作单元被放入存储库

1 个答案:

答案 0 :(得分:1)

这很复杂。首先从我对what a Repository is的简单解释开始。接下来,UoW概念被过度使用和滥用。考虑到存储库,使用Aggregates的DDD方法意味着存储库封装了一个UoW,因为聚合根中的所有内容必须作为一个整体保留。在数据库级别,UoW只是意味着使用事务,如果它们使用相同的事务,这甚至适用于多个存储库。

但是,大多数情况下这是错误的设计,因为它通常仅适用于非分布式应用程序,并且需要一些符合ACID标准的存储。虽然可能是您的情况,但您使用存储库模式的事实意味着您希望您的应用程序对持久性无知,这意味着您的应用程序不应该知道UoW,这是一种可用于持久性的模式(通过ORM或直接通过数据库事务)。

所以,我说'正确''答案是:存储库可能使用UoW实现,具体取决于特定需求。如果您正在使用ORM,则会自动使用UoW。