5

在我看来,唯一的区别是Active Record在数据容器类中有CRUD方法,而Repository模式对数据容器和CRUD方法使用单独的类,但我确实是错的。Active Record和Repository模式有什么区别?

Active Record和Repository模式有什么区别?我应该什么时候使用哪种模式?

回答

5

基本上,你的假设是正确的。存储库和DAO模式在Active Record内化它们时将外部持久性考虑因素外化。我已经看到一些实现,其中活动记录类被注入了一个存储库实例,这个实例在内部提供了持久性关注点。

反对使用Active Record模式的最大原因很简单,您的域对象不应该在乎它们是如何(或者甚至是)持久化的。存储库模式通过外部化持久性问题并将其作为外部服务提供,从而为域对象提供持久性无知。

2

IMO,存储库模式有助于减少对数据库进行查询的次数,因为它可以训练您根据事务和命令批处理进行思考,而使用Active Record模式时,它很容易被调用。保存(),.fetch()等,鲁莽放弃。数据库一般来说可能是一个足够大的瓶颈,不要让不必要的查询变得更糟。

相关问题