什么是持久性引擎(如ActiveRecord)?优势?缺点?

什么是持久性引擎(如ActiveRecord)?优势?缺点?,activerecord,persistence,Activerecord,Persistence,我听过所有关于Rail的持久性引擎(ActiveRecord)的讨论。我对它做了一次搜索,但我真的不知道它做了什么。它看起来像是一个映射到数据库的对象,但这就是我想到的。如果是这样,他们是否将对象保存到数据库以保持持久性?使用这种模式的优点是什么?缺点是什么 谢谢! Matt Mueller活动记录基本上是一种将类映射到关系数据库表的模式。对象表示数据库中的行。AR框架通过为每个数据库引擎生成适当的SQL语句来处理这些对象的保存和加载 示例 Database Table

我听过所有关于Rail的持久性引擎(ActiveRecord)的讨论。我对它做了一次搜索,但我真的不知道它做了什么。它看起来像是一个映射到数据库的对象,但这就是我想到的。如果是这样,他们是否将对象保存到数据库以保持持久性?使用这种模式的优点是什么?缺点是什么

谢谢!
Matt Mueller

活动记录基本上是一种将类映射到关系数据库表的模式。对象表示数据库中的行。AR框架通过为每个数据库引擎生成适当的SQL语句来处理这些对象的保存和加载

示例

Database Table              Active Record Class
-----------------------     --------------------------
People                   >  Person
-----------------------     --------------------------
FirstName : varchar(40)  >  string FirstName
LastName  : varchar(40)  >  string LastName
该框架为您提供了以独立于数据库的方式检索数据的常用方法,该方法与编程语言很好地集成

people = Person.GetAll()
生成并执行以下内容:

SELECT FirstName, LastName FROM People
它所做的是读取AR类的结构并推断列名。检索到的数据也以相同的方式映射回类

这样做的主要优点是可以删除对单个数据库引擎的依赖。例如,如果您决定从MySQL切换到SQLite,那么一个经过适当编码的AR框架可以做到这一点,而几乎不需要更改现有代码

然而,一个缺点是,您受到所使用的特定AR框架的支配。如果它在特定情况下不能生成正确的SQL,或者不支持特定的功能,那么您可能不得不退回到自己编写它,这会破坏数据库独立性的目的