企業(yè)應(yīng)用架構(gòu)模式之工作單元模式
工作單元模式是一種對象-關(guān)系行為模式。其定義如下:維護(hù)受業(yè)務(wù)影響的對象列表,并協(xié)調(diào)變化和并發(fā)問題的解決。
該模式主要考慮的問題是:數(shù)據(jù)庫的數(shù)據(jù)讀入內(nèi)存后的數(shù)據(jù)對象,被改變后在什么時(shí)機(jī)提交。一般而言,可以有兩種提交方式,即時(shí)提交和擇機(jī)提交。
(1)即時(shí)提交:當(dāng)對象改變的時(shí)候馬上提交到數(shù)據(jù)庫。這樣的好處是不需要維護(hù)一個(gè)受影響對象的列表,但是會(huì)導(dǎo)致數(shù)據(jù)庫的連接操作過多,影響性能。而且,它對性能的影響會(huì)導(dǎo)致系統(tǒng)響應(yīng)變慢。
(2)用工作單元保存對象的變化,擇機(jī)提交。 擇機(jī)提交需要考慮兩方面的事情,對象變化的記錄與提交時(shí)機(jī)。
對象變化的記錄可以考慮以下3種方法:
a,調(diào)用者注冊,數(shù)據(jù)對象用isDirty的標(biāo)識(shí),調(diào)用者改變數(shù)據(jù)對象后,將該標(biāo)識(shí)置為True。
b,對象注冊,對象的每個(gè)Setting方法都會(huì)自動(dòng)將isDirty的標(biāo)識(shí)置為True。
c,拷貝對象:(1)讀操作時(shí)拷貝,在提交的時(shí)候比較當(dāng)前對象與拷貝對象,看對象是否發(fā)生了改變。(2)寫操作時(shí)拷貝,一旦對象發(fā)生寫操作,拷貝對象,提交時(shí)把所有對象直接提交即可
提交時(shí)機(jī)也可以考慮以下方法:
a,定時(shí)提交,使用定時(shí)器,隔固定時(shí)間提交一次。
b,修改累積到一定量的時(shí)候提交,設(shè)置一個(gè)受影響對象個(gè)數(shù)的閾值,當(dāng)達(dá)到閾值的時(shí)候提交。
c,退出時(shí)提交,退出系統(tǒng)是提交修改。
原文鏈接:http://blog.csdn.net/luoxinwu123/article/details/8043042