Active Record和Repository模式有什么区别?

7

在我看来,Active Record 和 Repository 模式的唯一区别似乎在于,Active Record 在数据容器类中具有 CRUD 方法,而 Repository 模式使用单独的类来实现数据容器和 CRUD 方法。但是我可能是错的。

Active Record 和 Repository 模式之间有什么区别?我应该在什么情况下使用哪种模式?

2个回答

6

基本上,您的假设是正确的。存储库和DAO模式将持久性问题外部化,而Active Record则将其内部化。我实际上看到过一些实现,其中活动记录类被注入了一个提供其持久性问题的存储库实例。

使用Active Record模式最大的原因是简单的,您的领域对象不应关心它们如何(甚至是否)持久化。存储库模式通过外部化持久性问题并将其作为外部服务提供来为您的领域对象提供持久性忽略。


2

在我看来,仓储模式有助于减少对数据库的查询次数,因为它训练你以事务和命令批处理的形式思考,而使用活动记录模式时很容易过度调用.save()、.fetch()等方法。通常情况下,数据库已经是一个大瓶颈了,不要通过不必要的查询使其变得更糟。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接