域驱动设计 – DDD存储库的优点和缺点

优点:

>存储库隐藏复杂查询.
>存储库方法可以用作事务边界.
> ORM很容易被嘲笑

缺点:

> ORM框架已经提供了一些集合,如持久化对象的接口,存储库的意图是什么.因此,存储库为系统增加了额外的复杂性.
>组合爆炸时使用findBy方法.可以使用Criteria对象,查询或示例对象来避免这些方法.但是要做到这一点,不需要存储库,因为ORM已经支持这些方法来查找对象.
>由于存储库是聚集根(在DDD意义上)的集合,所以必须创建和传递聚合根,即使只修改一个子对象.

问题:

你知道什么利弊?
>你会建议使用存储库吗? (为什么或者为什么不?)

存储库的关键点(如单一责任原则)是抽象获取具有身份的对象的概念.当我变得更加舒适的DDD,我没有发现有用的思考仓库主要集中在数据持久性,而是作为实例化对象和坚持他们的身份的工厂.

当您使用ORM时,您应该以尽可能有限的方式使用他们的API,给自己一个可能是具体领域的立面.所以不管您的域名仍然会看到一个存储库.另一方面有一个ORM的事实是一个“实现细节”.

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...