青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 181  文章 - 15  trackbacks - 0
<2009年2月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

My Tech blog

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

5、重構數據庫訪問代碼

我們原來在開發過程當中,常常要求對有關數據庫的操作進行一些封裝,并把它們獨立為一個DAL層。DAL層其實就是一種和持久層的交互媒介。通過這種分層方式,開發者往往只需要修改DAL層的代碼就可以滿足變更,而不用重寫整個應用系統。

伴隨著敏捷方法和大型重構的出現,DAL的優勢又一次得到了有力的證明:對于那些有關數據庫架構的修改所帶來的影響只會被限制在DAL層。也只有這樣,我們才能夠讓我們后續的工作足夠的少。下圖給出了這樣一種分層結構:

refactoring9

5.1同步修改數據庫模式和數據庫訪問代碼

總體來說,應用系統之所以要保存數據,是為了在之后在讀出它們。

refactoring10

當和關系數據庫整合的時候,你就不得不創建一些冗余的數據類。業務對象作為數據類需要和數據庫中的數據進行對應。所以一旦重構這些業務對象,就不得不同時修改數據庫和應用系統。

這就意味著,在重構過程中,有四個潛在的地方可能需要修改:

1、有關這些業務對象的數據庫模式。

2、應用程序中定義這些業務對象的類。

3、從數據庫讀入數據,并將數據裝入業務對象的代碼。

4、把業務對象的數據持久化到數據庫中的代碼。

大體上,讀和寫數據作為直接和業務對象有關的操作,可以任意的放置在系統的任意地方。而一個設計精良的系統至少會保證有關某一個業務對象的持久化操作只會出現在特定的地方。然而不幸的是,在從數據庫讀取業務對象的數據的時候,你就往往不能夠保證這一點了,因為處于一些數據展示方面的要求,有可能會通過連接操作一次性的載入多個對象。

最為常見的重構業務對象的流程為:

1、以增量形式修改數據表:

總是添加新的字段;

要刪除的字段在代碼中仍然保留,但是被標記為“ 過時”;

通過復制來修改字段,老的字段被標記為“過時”。

2、為新的字段指派合適的默認值。

3、在修改業務對象的時候,要確保新添加字段的數據能夠被保存到業務對象中來,同時那些被聲明為“過時”的字段仍然能夠被提交而不會在運行過程中出現錯誤;如果必要的話,把那些確實要丟棄的字段聲明為“過時”。

4、所有數據的持久化操作必須接受新字段;

5、所有數據的裝載操作都必須確保這些新添字段的數據能夠讀入;所有對那些過時字段進行訪問的讀操作都應當被淘汰掉。

6、所有的數據持久化操作除去那些對過時字段的寫操作。

7、過時的字段從數據庫中刪除;

8、過時的字段從業務對象中刪除。

當然上面這些操作并不是一個通用的操作,他不一定適用于所有的情形。對于特定的重構,這些操作往往需要作出修改。

現在假設我們希望為我們的客戶對象添加一個“國家”的字段(也許在以前,我們只接待德國的客戶,而現在我們的業務擴展到了全世界)。為了達到這個目的,我們將會首先引入新的字段到類Customer中。這里我們把G(Germany)作為默認值來保存。到現在為止,這個字段既不會被寫,也不會被讀。

現在繼續下一步,我們把新的字段添加到數據庫的模式中來,然后我們讓每一個新的Customer都會默認得把G當作自己的國家。然后讀取Customer數據的操作就可以被修改了,接著是保存。最后新的字段的輸入框會被放到GUI上。

簡而言之,過程如下:

1、向類中添加新的字段;

2、向數據庫模式中添加新的字段;

3、讓字段可讀;

4、讓字段可以保存;

5、在GUI上可視。

每一步之后,我們的軟件系統都處在一種一致性的狀態中。直到最后一步完成,達到了我們想要的效果。而在這一步之前,系統只能夠處理德國的客戶。

當然,事情并不是總象我們所想象的那般簡單:現在我們假設這樣一個例子,我們希望把國家代碼以一個數字來代替,而不是這個國家的首字母。為了達到這一點,“國家”字段的類型必須從String型轉換為Integer型,這個變化既要應用于程序代碼中,也要應用于數據庫中。

下面一系列的操作將要完成這個需求:

1、向類中添加新字段,然后指定默認值。

2、修改數據庫模式,指定默認值。添加對這個字段進行保存的有關代碼;

3、添加用來進行業務對象數據載入的代碼;

4、把所有GUI上面有關對于舊字段的訪問轉換為對于新字段的訪問。

5、去除舊字段的載入代碼;

6、去除舊字段的保存代碼;

7、從類中刪除舊字段;

8、從數據庫模式中刪除舊字段。

注意第一點和第二點:在這里不要使用靜態默認值,因為默認值是依賴于已經存在的國家編碼的。需要一個額外的算法來計算已經存在的那些國家的數字表現形式。基于這個目的,這個額外的算法有可能去訪問數據庫中的有關國家、編號對應的表。

進一步看這個過程,你會發現,載入數據和保存數據總是無法在一步完成。事實是,系統中和這兩個操作有關的過程往往需要經過多次變動才能滿足要求。

當然,讓重構的最后一步去處理這些事情是相當誘人的。一旦第三步中有關數據載入的操作被去掉,系統可能開始的時候看上去還不錯,但不可避免的就是你可能在一段時間之內得不到存放在數據庫中的真正的數值,取而代之的是你的那個默認值。這樣的潛在問題會四處爆發,你的相關的代碼都不能幸免于難。

posted on 2007-08-23 21:00 littlegai 閱讀(213) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一级视频精品观看| 伊人夜夜躁av伊人久久| 亚洲制服欧美中文字幕中文字幕| 亚洲国产精品精华液网站| 久久精品视频一| 老妇喷水一区二区三区| 欧美第十八页| 99精品视频网| 久久精品噜噜噜成人av农村| 老鸭窝毛片一区二区三区| 欧美二区在线| 国产精品乱人伦一区二区| 极品尤物久久久av免费看| 亚洲人体影院| 欧美一区二区三区视频| 欧美成人自拍| 亚洲尤物在线| 欧美国产日本在线| 国产日韩综合一区二区性色av| 亚洲人被黑人高潮完整版| 欧美一级理论性理论a| 欧美激情国产日韩| 亚洲视频一区在线| 久久综合伊人77777蜜臀| 欧美日韩国产999| 国产一区二区三区在线观看精品 | 激情综合色丁香一区二区| 亚洲精品视频免费在线观看| 欧美亚洲日本国产| 亚洲激情黄色| 久久久精品视频成人| 欧美小视频在线| 91久久久亚洲精品| 久久久久久穴| 亚洲一区二三| 国产精品扒开腿做爽爽爽软件| 1769国内精品视频在线播放| 午夜精品av| 久久精品中文| 久久婷婷色综合| 国产午夜久久| 亚洲嫩草精品久久| 亚洲精品久久久久久久久| 久久精品国产精品 | 亚洲欧美一区二区激情| 欧美成人精品一区二区三区| 国产一区二区三区视频在线观看| 欧美一区二区高清| 一区二区三区精密机械公司| 欧美美女视频| 在线亚洲免费视频| 日韩视频中午一区| 欧美日韩视频在线一区二区观看视频 | 亚洲乱码精品一二三四区日韩在线| 欧美专区在线| 国内成人自拍视频| 久久久久久一区二区| 亚洲欧美综合v| 国产欧美一区二区精品婷婷| 欧美一区二区高清| 午夜一级久久| 狠久久av成人天堂| 六月丁香综合| 欧美韩国日本综合| 亚洲校园激情| 午夜一区不卡| 亚洲韩国一区二区三区| 亚洲人成在线观看网站高清| 欧美日韩伦理在线免费| 亚洲一区日本| 午夜精品久久久久久久蜜桃app| 国产欧美精品xxxx另类| 久久爱www.| 久久久噜噜噜久久| 亚洲区一区二| 一区二区三区产品免费精品久久75 | 欧美日韩日本网| 午夜精品久久99蜜桃的功能介绍| 亚洲欧美日产图| 亚洲国产成人精品久久久国产成人一区| 欧美激情精品久久久久久蜜臀| 欧美精品一区二区精品网| 亚洲一区二区三区高清不卡| 亚洲欧美www| 亚洲国产精品久久久久久女王| 亚洲精品国精品久久99热| 国产精品久久久久久久7电影| 久久精品视频亚洲| 欧美国产日韩一区| 久久岛国电影| 欧美精品色网| 一区二区久久久久久| 亚洲美女视频网| 亚洲欧美欧美一区二区三区| 亚洲福利视频二区| 亚洲一区二区三区高清| 亚洲激情电影中文字幕| 亚洲一区综合| 99精品国产在热久久婷婷| 亚洲欧洲99久久| 99精品国产99久久久久久福利| 午夜国产精品影院在线观看| 亚洲精品字幕| 久久久免费精品| 欧美一区二区成人6969| 欧美日本国产精品| 欧美成人自拍| 黄色在线成人| 性欧美videos另类喷潮| aa级大片欧美| 你懂的国产精品| 久久亚洲精品一区二区| 欧美性理论片在线观看片免费| 欧美成人按摩| 好看不卡的中文字幕| 亚洲一区二区精品| 亚洲视频在线播放| 美女啪啪无遮挡免费久久网站| 久久久九九九九| 国产日韩一区| 欧美一区在线视频| 欧美在线网址| 亚洲欧美在线网| 亚洲第一在线视频| 久久久www免费人成黑人精品 | 免费人成网站在线观看欧美高清| 欧美天天影院| 亚洲免费av网站| 日韩天堂av| 欧美另类99xxxxx| 亚洲欧洲日本mm| 亚洲乱码日产精品bd| 久久性天堂网| 欧美高清视频一区二区| 亚洲电影在线免费观看| 久久国产手机看片| 卡通动漫国产精品| 伊人久久综合| 另类欧美日韩国产在线| 亚洲第一免费播放区| 在线视频国内自拍亚洲视频| 欧美一区二区视频97| 久久精品国产精品亚洲综合| 国产精品久久久久7777婷婷| 一区二区精品在线观看| 亚洲欧美久久久| 国产亚洲欧美另类中文| 久久夜精品va视频免费观看| 亚洲国产毛片完整版| 宅男66日本亚洲欧美视频| 欧美丝袜一区二区| 午夜国产精品视频| 欧美成人免费全部| av成人国产| 国产精品一国产精品k频道56| 小黄鸭精品密入口导航| 男女视频一区二区| 91久久精品国产| 欧美成人中文| 亚洲精品乱码久久久久| 欧美国产日本| 男人插女人欧美| 亚洲精品视频中文字幕| 欧美激情亚洲综合一区| 浪潮色综合久久天堂| 亚洲激情在线观看| 99热这里只有精品8| 国产精品草草| 久久手机免费观看| 久久亚洲春色中文字幕| 亚洲精品国产精品乱码不99| 亚洲欧洲精品天堂一级| 国产精品二区二区三区| 欧美一区二区成人6969| 久久人人97超碰国产公开结果| 亚洲第一狼人社区| 亚洲第一网站| 国产一区二区高清不卡| 欧美国产日产韩国视频| 国产精品久久久久久久久久直播 | 亚洲专区一区| 久久一区二区三区av| 久久精品一区二区| 亚洲美女电影在线| 亚洲欧美日韩中文在线制服| 日韩一区二区高清| 亚洲女优在线| 一区电影在线观看| 美国成人毛片| 欧美成人官网二区| 亚洲经典自拍| 免费成人黄色片| 久久午夜精品| 尤妮丝一区二区裸体视频| 这里只有精品视频在线| 久久免费高清| 欧美韩国一区| 亚洲乱码精品一二三四区日韩在线| 鲁大师成人一区二区三区| 女仆av观看一区|