我一直在使用存储库模式(DDD和POEAA)一段时间。然而,我们的一些团队成员认为这只是一个额外的抽象层,并且是不必要的。 我可以在他们的论点中看到一些好处。现代的ORM解决方案(NHibernate或EF)几乎拥有您所需的一切。我搜索并找到了一些关于此主题的文章,如this和counterargument。所以库模式是一个矫枉过正的?存储库模式过度冲击
10
A
回答
12
这主要取决于问题的复杂性以及域模型在解决方案中扮演的角色。对于简单的解决方案,Repository可能是矫枉过正的。但对于具有强大语言和不断发展的需求/需求的复杂领域,存储库是一个非常好的,干净的抽象,它拥有域对象生命周期。许多ORM将做大部分工作,但是,在一个复杂的领域中,始终存在一些在存储库中有意义的域活动,并且ORM不支持这种活动。
底线:它取决于上下文。
4
在单元测试中模拟数据访问是我使用存储库接口的主要原因。可维护性的另一个原因 - 您可以轻松实现缓存策略,或切换到其他数据访问实现,如从服务而不是数据库获取数据。
1
我们在我们的项目中使用存储库的一个原因是,它强制实施我们的总根(我们只允许AR的存储库),以便正确地处理AR,而不是查询任何可能影响您的想法。
正如Al提到的那样..它确实提供了一个很好的界面,可以在单元测试中进行模拟。
相关问题
- 1. 存储库模式和存储过程
- 2. 存储过程的存储库模式
- 3. 存储库模式
- 4. 存储库模式 - 缓存
- 5. 存储库模式和Azure表存储(???)
- 6. 存储库模式和Azure表存储
- 7. 存储库模式,使用存储过程的EF
- 8. 使用存储库模式
- 9. EF和存储库模式
- 10. 存储库模式与STE
- 11. 存储库模式问题
- 12. 通用存储库模式
- 13. 存储库模式问题
- 14. Linq2Sql存储库模式
- 15. 存储库模式MVC4 EF5
- 16. 存储库模式问题
- 17. 存储库模式与ORM
- 18. 了解存储库模式
- 19. NHibernate存储库模式
- 20. 存储库模式变化?
- 21. 存储库模式混淆
- 22. LLBLGen和存储库模式
- 23. nHibernate [TransactionAttribute]为UoW冲突与存储库模式
- 24. 存储过程的模式?
- 25. 存储库模式和DAL没有存储库模式的DAL中的区别?
- 26. 存储库模式中的“模块”
- 27. 存储库模式的域模型
- 28. 建立一个数据库,模式,表和存储过程都在点击
- 29. 存储库模式与存储库工厂
- 30. 存储库模式继续 - 类方法或存储库方法?
你永远不会因'它取决于'而出错。 :) – 2010-08-09 21:26:52
@Arnis - 这就是为什么,作为开发人员,我们不只是锤子,我们有一个完整的工具箱。 – Martin 2011-02-15 17:31:06
@Martin有些只有胶带:) – 2011-02-16 10:16:11