摘要:運行機制表數(shù)據(jù)入口包含了用于訪問單個表或試圖的所有,如選擇插入更新刪除等。其他代碼調(diào)用它的方法來實現(xiàn)所有與數(shù)據(jù)庫的交互。示例如下圖分別是普通情況下充分利用特征下的表數(shù)據(jù)入口實現(xiàn)行數(shù)據(jù)入口充當數(shù)據(jù)源中單條記錄入口的對象,每行一個實例。
1. 表數(shù)據(jù)入口
充當數(shù)據(jù)庫表訪問入口的對象,一個實例處理表中所有的行。
1)運行機制: 表數(shù)據(jù)入口包含了用于訪問單個表或試圖的所有SQL,如選擇、插入、更新、刪除等。其他代碼調(diào)用它的方法來實現(xiàn)所有與數(shù)據(jù)庫的交互。
表數(shù)據(jù)入口可以和表模塊一起使用,它產(chǎn)生一個記錄集數(shù)據(jù)結構由表模塊處理
數(shù)據(jù)入口特別適用于事務腳本,行數(shù)據(jù)入口和表數(shù)據(jù)入口間的選擇歸結于如何處理多數(shù)據(jù)行,當結果集的表現(xiàn)便于事務腳本處理時,用表數(shù)據(jù)入口。
3)示例: 如下2圖分別是普通情況下、充分利用.net特征下的表數(shù)據(jù)入口實現(xiàn):
2. 行數(shù)據(jù)入口
充當數(shù)據(jù)源中單條記錄入口的對象,每行一個實例。
1)運行機制:特征:行數(shù)據(jù)入口是和單條記錄及其相似的對象,如數(shù)據(jù)庫中的一行(該對象中數(shù)據(jù)庫中的每一列變成了一個域)
問題:在哪里存放產(chǎn)生該模式的查找操作?鑒于選擇靜態(tài)查找方法不支持為不同數(shù)據(jù)源提供不同查找方法的多態(tài),需要設置多帶帶的查找方法對象(這樣關系數(shù)據(jù)庫每一張表都一個查找方法類和入口來獲得結果)
行數(shù)據(jù)入口和活動記錄之間的區(qū)別:是否存在任何領域邏輯,如果存在,則是活動記錄
2)使用時機:事務腳本(關于表數(shù)據(jù)入口和行數(shù)據(jù)入口之間的選擇,參考表數(shù)據(jù)入口)
行數(shù)據(jù)入口可以和數(shù)據(jù)映射器一起配合使用:行數(shù)據(jù)入口從元數(shù)據(jù)自動生成,數(shù)據(jù)映射器由手動實現(xiàn)
3)實例:3. 活動記錄
一個對象,它包含數(shù)據(jù)庫表或視圖中的某一行,封裝數(shù)據(jù)庫訪問,并在這些數(shù)據(jù)上增加了領域邏輯
1)運行機制:活動記錄的本質(zhì)是一個領域模型,這個領域模型中的類和基數(shù)據(jù)庫中記錄結構十分吻合。
活動記錄通常具有如下方法:
由SQL結果集中的一行構造一個活動記錄實例;
為將來對表的插入構造一個新的實例;
用靜態(tài)查找方法來包裝常用的SQL查詢和返回活動記錄(也可以分離為一個多帶帶的類);
更新數(shù)據(jù)庫并將活動記錄中的數(shù)據(jù)插入數(shù)據(jù)庫;
獲取或設置域;
實現(xiàn)部分業(yè)務邏輯。
2)使用時機:適合于創(chuàng)建、讀、更新、刪除等不太復雜的領域邏輯;
優(yōu)點:簡單,容易創(chuàng)建,易于理解;
缺點:要求對象的設計和數(shù)據(jù)庫的設計緊耦合,項目中難以進一步重構;當業(yè)務邏輯復雜,對象間有引用、集合和繼承等關心時,難以映射到活動記錄
3)示例:
其中,標圈的是領域邏輯實現(xiàn)。
4. 數(shù)據(jù)映射器 在保持對象和數(shù)據(jù)庫(以及映射器本身)彼此獨立的情況下在二者之間移動數(shù)據(jù)的一個映射器層,如下:
主要功能:分離領域和數(shù)據(jù)源
延時加載
基于元數(shù)據(jù)的映射
2)使用時機:業(yè)務邏輯復雜,數(shù)據(jù)庫方案和對象模型需要彼此獨立演變時
3)實例:
其中,DataMapper實現(xiàn)了IPersonFinder接口,用于查找方法實現(xiàn)。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30072.html
摘要:領域模型應當使用細粒度的對象,這些對象應有細粒度的接口。它封裝了應用的業(yè)務邏輯事務控制及其操作實現(xiàn)中的響應協(xié)調(diào)。 1. 事務腳本 1)調(diào)用數(shù)據(jù)庫: 事務腳本將所有邏輯組成單個過程,在過程中直接調(diào)用數(shù)據(jù)庫,或者只通過一個簡單的數(shù)據(jù)庫封存器。 2)腳本處理: 每個事務都有自己的事務腳本,盡管事務間的公共子任務可以被分解成多個子程序。 3)運行機制: a.事務腳本應該置于與其他處理表現(xiàn)層和數(shù)...
摘要:企業(yè)應用在某些方面要比電信軟件簡單得多多線程問題沒有那么困難,無需關注硬件設備與軟件的集成。但是,在某些方面,企業(yè)應用又比電信軟件復雜得多企業(yè)應用一般都涉及到大量復雜數(shù)據(jù),而且必須處理很多不合邏輯的業(yè)務規(guī)則。 構建計算機系統(tǒng)并非易事。隨著系統(tǒng)復雜性的增大,構建相應軟件的難度將呈指數(shù)增大。 同其他行業(yè)一樣,我們只有在不斷的學習中進步,從成功經(jīng)驗中學習,從失敗教訓中學習,才有望克服這些困難...
摘要:本文整理自于振華老師在上的演講實錄,演講主題為在銀行核心金融領域的研究與實踐。年月,我們投產(chǎn)了行業(yè)內(nèi)首個面向核心金融業(yè)務的分布式數(shù)據(jù)庫,采用的是兩地三中心五副本的架構模式。 作者介紹:于振華,北京銀行軟件開發(fā)部資深架構師,長期從事銀行核心系統(tǒng)研發(fā)、規(guī)劃,參與過多個核心信息系統(tǒng)建設工作,包括一、二代支付系統(tǒng)、第四代銀行核心系統(tǒng)建設、分布式核心系統(tǒng)建設等企業(yè)級項目工作。當前主要研發(fā)方向集中...
摘要:工作單元用于維護受業(yè)務事務影響的對象列表,并協(xié)調(diào)變化的寫入和并發(fā)問題的解決。工作單元控制器工作單元控制所有數(shù)據(jù)庫的讀操作,一旦對象被讀取,將將它注冊為干凈的對象。 1. 工作單元 用于維護受業(yè)務事務影響的對象列表,并協(xié)調(diào)變化的寫入和并發(fā)問題的解決。如下: showImg(https://segmentfault.com/img/remote/1460000018095222?w=162...
閱讀 1571·2021-09-24 10:38
閱讀 1498·2021-09-22 15:15
閱讀 3059·2021-09-09 09:33
閱讀 905·2019-08-30 11:08
閱讀 638·2019-08-30 10:52
閱讀 1253·2019-08-30 10:52
閱讀 2345·2019-08-28 18:01
閱讀 521·2019-08-28 17:55