充當數據庫表訪問入口的對象,一個實例處理表中全部的行。數據庫
表數據入口包含了用於訪問單個表或試圖的全部SQL,如選擇、插入、更新、刪除等。其餘代碼調用它的方法來實現全部與數據庫的交互。
表數據入口能夠和表模塊一塊兒使用,它產生一個記錄集數據結構由表模塊處理數據結構
數據入口特別適用於事務腳本,行數據入口和表數據入口間的選擇歸結於如何處理多數據行,當結果集的表現便於事務腳本處理時,用表數據入口。app
以下2圖分別是普通狀況下、充分利用.net特徵下的表數據入口實現: spa
充當數據源中單條記錄入口的對象,每行一個實例。.net
特徵:行數據入口是和單條記錄及其類似的對象,如數據庫中的一行(該對象中數據庫中的每一列變成了一個域)設計
問題:在哪裏存放產生該模式的查找操做?鑑於選擇靜態查找方法不支持爲不一樣數據源提供不一樣查找方法的多態,須要設置單獨的查找方法對象(這樣關係數據庫每一張表都一個查找方法類和入口來得到結果)3d
行數據入口和活動記錄之間的區別:是否存在任何領域邏輯,若是存在,則是活動記錄對象
事務腳本(關於表數據入口和行數據入口之間的選擇,參考表數據入口)blog
行數據入口能夠和數據映射器一塊兒配合使用:行數據入口從元數據自動生成,數據映射器由手動實現繼承
一個對象,它包含數據庫表或視圖中的某一行,封裝數據庫訪問,並在這些數據上增長了領域邏輯
活動記錄的本質是一個領域模型,這個領域模型中的類和基數據庫中記錄結構十分吻合。
活動記錄一般具備以下方法:
由SQL結果集中的一行構造一個活動記錄實例;
爲未來對錶的插入構造一個新的實例;
用靜態查找方法來包裝經常使用的SQL查詢和返回活動記錄(也能夠分離爲一個單獨的類);
更新數據庫並將活動記錄中的數據插入數據庫;
獲取或設置域;
實現部分業務邏輯。
適合於建立、讀、更新、刪除等不太複雜的領域邏輯;
優勢:簡單,容易建立,易於理解;
缺點:要求對象的設計和數據庫的設計緊耦合,項目中難以進一步重構;當業務邏輯複雜,對象間有引用、集合和繼承等關心時,難以映射到活動記錄
其中,標圈的是領域邏輯實現。
在保持對象和數據庫(以及映射器自己)彼此獨立的狀況下在兩者之間移動數據的一個映射器層,以下:
主要功能:分離領域和數據源
延時加載
基於元數據的映射
業務邏輯複雜,數據庫方案和對象模型須要彼此獨立演變時
其中,DataMapper實現了IPersonFinder接口,用於查找方法實現。