1. 程式人生 > >PEAA筆記六:Active Record

PEAA筆記六:Active Record

What is it
 Active Record包裝了資料表或檢視中的一行資料,封裝了它的資料庫訪問行為,並加入了該資料的業務邏輯。也可以這樣看,Active Record是加入了資料庫訪問行為的Domain Object ^_^

How it works
 Active Record即可以包含資料記錄的所有業務邏輯,也可以只包含普通的面向資料的邏輯,將其餘的業務邏輯通過Transaction Script來實現
 Active Record常常實現下面的方法:
 1。通過Sql查詢結果構造一個Active Record例項
 2。為插入資料庫操作預先生成一個Active Record例項
 3。靜態的Finder方法,返回Active Record物件
 4。通過Active Record物件Update資料庫和Insert資料庫
 5。Get/Set資料域
 6。實現一些業務邏輯
 由於Active Record和資料庫的緊密耦合,我們經常在此模式中看到靜態的Finder方法,當然也可以把這些Finder方法放到一個類中。

When to use it
 Active Record的一個優點是比較簡單,在基於單條資料記錄的CRUD操作中都能很好的工作
 在Domain Model中主要的選擇就是Active Record和Data Mapping,前者比較簡單,而且比較適合解決物件模型恰好對應資料庫中的表結構的業務領域。但是問題是如果義務邏輯比較複雜,你希望你的物件模型能夠處理關係,集合,繼承等等時,Active Record就力不從心了,這是就是使用Data Mapper的時候了
 Active Record的另一個問題是它把物件模型的設計緊密地和資料庫結構耦合在一起,修改和重構都很困難
 如果你使用Transaction Script,那麼Active Object也是一個很好的模式,它幫你減少程式碼重複等不好的現象。