如果您创建了一个存储库类,它封装了给定实体的所有持久性逻辑,例如PersonRepository,但您的存储库类没有实现工作单元模式或身份映射模式,它仍然被视为存储库吗?换句话说,是存储库实现所需的工作单元和身份映射,还是我们可以只调用将持久性逻辑封装成存储库的任何类?
我应该添加一件事。如果存储库不需要这些模式并且它实际上只是持久性方法的容器,那么存储库和DAO(数据访问对象)之间有什么区别?我们只是为同一个对象创建多个名称,还是我们错过了存储库的部分内容?
答案 0 :(得分:3)
是的,它仍然是一个存储库。
至于Repository == DAO,我认为Repository应该位于业务逻辑层,而DAO应该位于数据访问层,即我认为它们位于不同的层上。据我所知,Repository调用DAO方法来加载和保存数据。
答案 1 :(得分:3)
我认为存储库和工作单元模式是正交的。
我经常希望单个工作单元跨越多个存储库上的操作,因此其实现属于更高层。
答案 2 :(得分:1)
以Sii所说的为基础 - 如果存储库和工作单元不相关,那么对我来说似乎更好。分离关注点?
答案 3 :(得分:1)
在考虑关注点分离时,请记住您的存储库将具有数据存储实现方法,允许您将其保留在主代码之外。这有助于单元测试以及最终完全交换数据存储实现(数据存储实现的一个例子是ASP.NET中的LINQ-to-SQL。)