2009-12-21 89 views
2

我听说过关于Rail的持久性引擎(ActiveRecord)的所有讨论。我对它进行了搜索,并且我无法真正了解它做了什么。它似乎是一个对象映射到数据库,但这就是我想出的。如果是这样,他们将对象保存到数据库以保持持久性?使用这个模型有什么好处?有什么缺点?什么是持久性引擎(如ActiveRecord)?优点?缺点是什么?

谢谢! Matt Mueller

回答

3

活动记录基本上是一种将类映射到关系数据库表的模式。对象表示数据库中的行。 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或不支持某个特定功能,那么您可能不得不自行编写它,这会破坏数据库独立性的目的。

+0

感谢您的解释! – Matt 2009-12-21 07:42:26