Activerecord 活动记录和DAO之间的区别?

Activerecord 活动记录和DAO之间的区别?,activerecord,dao,Activerecord,Dao,数据访问对象和活动记录之间有什么区别?它们似乎完全相同,既在应用程序层和持久化层之间构建了一个层,又使用SQL查询抽象出直接的数据库访问。数据访问对象(DAO)是指数据层中负责在域中持久化单独实体的对象。活动记录是执行DAO的一种特定方法,其中包含表中单个行的值的类还负责查询、更新、插入和删除该表。活动记录设计模式意味着您的对象与数据库中的表具有一对一的映射。数据访问对象(DAO)是专用于将模型/域对象持久化到数据源的接口。这是一个例子 ActiveRecord模式以类似的方式工作,但将持久性方

数据访问对象和活动记录之间有什么区别?它们似乎完全相同,既在应用程序层和持久化层之间构建了一个层,又使用SQL查询抽象出直接的数据库访问。

数据访问对象(DAO)是指数据层中负责在域中持久化单独实体的对象。活动记录是执行DAO的一种特定方法,其中包含表中单个行的值的类还负责查询、更新、插入和删除该表。活动记录设计模式意味着您的对象与数据库中的表具有一对一的映射。

数据访问对象(DAO)是专用于将模型/域对象持久化到数据源的接口。这是一个例子

ActiveRecord模式以类似的方式工作,但将持久性方法放在模型对象本身上,而DAO定义了一个离散接口

DAO模式的优点是:

  • 很容易定义另一种持久化风格,例如从数据库移动到云,而不改变底层实现,而外部接口保持不变,因此不会影响其他类

  • 持久性关注点被模块化,远离主要的模型对象关注点


ActiveRecord模式的优点是简单

我认为你的第一颗子弹不准确。也许在某些实现中,但在其他实现中,完全可以在不更改接口的情况下更改持久性机制(即使在运行时)relationdb、平面文件或web服务。。。特别是如果该接口设计良好(即,它只是创建、读取、更新和删除)。区别在于(同样,取决于实现……因为这些特性可以与许多语言混合在一起……@maingue是的,如果语言提供轻松和动态(而不是静态)的话)ActiveRecord已经可以实现mixins DAO目标。我认为值得注意的是,
ActiveRecord
本质上是一个遗留模式,而被
DAO
@AmirAbiri所取代,他说
ActiveRecord
本质上是一个遗留模式?许多框架仍然使用它。例如Ruby on Rails、Mongoose、Sequelize、Django等。