Mat*_*att 2 activerecord persistence
我听过所有关于 Rail 持久性引擎 (ActiveRecord) 的讨论。我对它进行了搜索,但我无法真正清楚地了解它的作用。看起来它是一个到数据库的对象映射,但这就是我想到的。如果是这样,他们会将对象保存到数据库中以保持持久性吗?使用这个模型有什么优点?有什么缺点?
谢谢!马特·穆勒
Active Record 基本上是一种将类映射到关系数据库表的模式。对象代表数据库中的行。AR 框架通过为每个数据库引擎生成适当的 SQL 语句来处理这些对象的保存和加载。
例子
Database Table Active Record Class
----------------------- --------------------------
People > Person
----------------------- --------------------------
FirstName : varchar(40) > string FirstName
LastName : varchar(40) > string LastName
Run Code Online (Sandbox Code Playgroud)
该框架为您提供了以独立于数据库的方式检索数据的常用方法,该方式与编程语言很好地集成。
people = Person.GetAll()
Run Code Online (Sandbox Code Playgroud)
它会生成并执行以下内容:
SELECT FirstName, LastName FROM People
Run Code Online (Sandbox Code Playgroud)
它所做的就是读取 AR 类的结构并推断列名称。检索到的数据也以相同的方式映射回类。
这样做的主要优点是消除了对单个数据库引擎的依赖。例如,如果您决定从 MySQL 切换到 SQLite,则正确编码的 AR 框架可以做到这一点,而几乎无需对现有代码进行任何更改。
然而,缺点是您会受到所使用的特定 AR 框架的支配。如果它在某种情况下不能生成正确的 SQL 或者不支持特定功能,您可能不得不自己编写它,这违背了数据库独立性的目的。
| 归档时间: |
|
| 查看次数: |
2366 次 |
| 最近记录: |