存储库仍然是没有工作单元的存储库吗?

时间:2009-04-24 19:10:04

标签: model domain-driven-design repository-pattern

如果您创建了一个存储库类,它封装了给定实体的所有持久性逻辑,例如PersonRepository,但您的存储库类没有实现工作单元模式或身份映射模式,它仍然被视为存储库吗?换句话说,是存储库实现所需的工作单元和身份映射,还是我们可以只调用将持久性逻辑封装成存储库的任何类?

我应该添加一件事。如果存储库不需要这些模式并且它实际上只是持久性方法的容器,那么存储库和DAO(数据访问对象)之间有什么区别?我们只是为同一个对象创建多个名称,还是我们错过了存储库的部分内容?

4 个答案:

答案 0 :(得分:3)

是的,它仍然是一个存储库。

至于Repository == DAO,我认为Repository应该位于业务逻辑层,而DAO应该位于数据访问层,即我认为它们位于不同的层上。据我所知,Repository调用DAO方法来加载和保存数据。

答案 1 :(得分:3)

我认为存储库和工作单元模式是正交的。

我经常希望单个工作单元跨越多个存储库上的操作,因此其实现属于更高层。

答案 2 :(得分:1)

以Sii所说的为基础 - 如果存储库和工作单元不相关,那么对我来说似乎更好。分离关注点?

答案 3 :(得分:1)

在考虑关注点分离时,请记住您的存储库将具有数据存储实现方法,允许您将其保留在主代码之外。这有助于单元测试以及最终完全交换数据存储实现(数据存储实现的一个例子是ASP.NET中的LINQ-to-SQL。)