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