2011-07-10 84 views
17

數據訪問對象和活動記錄有什麼區別?它們看起來是完全相同的,因爲它們在應用程序和持久層之間建立了一個層,並使用SQL查詢抽象出直接的數據庫訪問。活動記錄和DAO之間的區別?

回答

17

數據訪問對象(DAO)引用數據層中的一個對象,負責在您的域中保留一個單獨的實體。活動記錄是混合的,其中包含表中單個行值的類也負責查詢,更新,插入和刪除該表。 Active Record設計模式意味着您的對象與數據庫中的表有一對一的映射關係。

18

A 數據訪問對象(DAO)是專用於將模型/域對象持久化到數據源而不僅僅是數據層中的任何對象的接口。這是一個reference

ActiveRecord模式以類似的方式工作,但將持久性方法放在模型對象本身上,而DAO定義了離散接口。 DAO模式的優點是:

  • 它易於限定的持久性,例如,從一個數據庫移動到雲,而無需改變底層impelementation的另一個風格,而外部接口保持不變,因此不影響其他類。

  • 持久性問題模塊化遠離主模型對象的關注點。

ActiveRecord模式的優點是簡單。

+0

我認爲你的第一個子彈是不準確的。也許在某些實現中,但在其他實現中,完全有可能在不改變接口的情況下更改持久性機制(即使在運行時)relationdb,平面文件或Web服務......特別是如果該接口設計得很好(即它只是創建,讀取,更新,刪除)。不同之處在於(再次,取決於具體實現......因爲這些特徵可以混入多種語言中......) – Mainguy

+0

@Mainguy是的,如果語言提供了輕鬆動態(而非靜態)mixins DAO目標可以被滿足已經通過ActiveRecord。 –

相關問題