我听过所有关于Rail的持久性引擎(ActiveRecord)的讨论。我对它进行了搜索,但我无法清楚地知道它做了什么。它似乎是一个Object映射到数据库,但这就是我想出来的。如果是这样,他们将对象保存到数据库以保持持久性?使用这个模型有什么好处?有什么缺点?
谢谢! 马特穆勒
答案 0 :(得分:3)
Active Record基本上是一种将类映射到关系数据库表的模式。对象表示数据库中的行。 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或者不支持特定的功能,那么您可能不得不回头自己编写它,这会破坏数据库独立性的目的。