2009-12-21 91 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