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

隨筆 - 181  文章 - 15  trackbacks - 0
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(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>
            黄色一区二区三区四区| 亚洲免费一在线| 亚洲午夜精品视频| 亚洲午夜久久久| 亚洲一区二区三区在线播放| 一区二区三区四区五区精品| 一本色道久久综合精品竹菊| 亚洲天堂成人在线观看| 亚洲欧美日韩在线一区| 欧美一区二区三区在| 久久精品99国产精品| 欧美成人激情视频免费观看| 亚洲国产精品久久久久婷婷884 | 亚洲高清在线播放| 亚洲伦理在线观看| 午夜精品亚洲一区二区三区嫩草| 久久精品青青大伊人av| 欧美高清在线视频观看不卡| 9i看片成人免费高清| 久久riav二区三区| 欧美日韩成人在线播放| 国产综合在线视频| 一区二区三区精密机械公司| 欧美中在线观看| 亚洲欧洲久久| 久久精品在线免费观看| 欧美日韩免费在线观看| 国产综合欧美| 亚洲一区二区成人在线观看| 久久综合网络一区二区| 久久亚洲国产精品一区二区| 一区二区日韩欧美| 性欧美video另类hd性玩具| 噜噜爱69成人精品| 国产精品网站在线| 日韩一区二区免费高清| 久久综合久久久久88| 在线视频欧美日韩精品| 免费成人av| 国产一区视频在线看| 亚洲曰本av电影| 亚洲国产欧美在线人成| 久久久久se| 国产精品一区二区久久| aa成人免费视频| 欧美成人亚洲| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品欧美风情| 亚洲嫩草精品久久| 亚洲精品资源| 欧美精品www在线观看| 亚洲国产精品嫩草影院| 久久久国产精品亚洲一区| 亚洲欧美日韩国产综合| 国产精品一区二区你懂的| 亚洲欧美精品suv| 亚洲图片欧美午夜| 国产精品一区视频网站| 午夜宅男欧美| 欧美一区二区播放| 国产亚洲欧美aaaa| 久久婷婷蜜乳一本欲蜜臀| 欧美一区二区三区播放老司机 | 亚洲视频专区在线| 欧美日韩精品中文字幕| 中文欧美在线视频| 一区二区免费在线播放| 国产精品日韩欧美| 久久国产精品网站| 久久久久久综合网天天| 亚洲国产成人午夜在线一区| 亚洲电影免费观看高清完整版在线观看| 久久米奇亚洲| 99国产精品99久久久久久粉嫩| 亚洲精品国精品久久99热| 欧美日韩视频免费播放| 性做久久久久久| 久久亚洲精选| 亚洲视频精选在线| 中文精品视频| 国自产拍偷拍福利精品免费一| 美女国产一区| 欧美日韩成人在线视频| 亚洲一区在线免费| 久久精品国产亚洲5555| 亚洲人午夜精品| 亚洲午夜精品一区二区三区他趣| 国产欧美一区二区三区久久| 另类激情亚洲| 亚洲国产精品女人久久久| 欧美激情一区二区三区高清视频| 亚洲精品在线观看免费| 一区二区三区视频在线| 国产伦精品一区二区三区视频孕妇 | 国产精品久久久久毛片大屁完整版 | 国产一区二区三区高清在线观看 | 亚洲一区二区三区四区五区黄 | 亚洲欧美一区二区三区在线| 久久av免费一区| 中国女人久久久| 久久九九99| 亚洲一区二区在线看| 久久精品在线播放| 午夜精品影院| 欧美 日韩 国产精品免费观看| 亚洲欧美制服另类日韩| 欧美v亚洲v综合ⅴ国产v| 午夜欧美精品| 欧美日韩精品一区视频| 欧美黄色aa电影| 国产一区二区三区电影在线观看 | 国产精品99久久久久久白浆小说| 久久se精品一区二区| 亚洲欧美日韩综合| 欧美日本免费| 亚洲国产精品久久人人爱蜜臀 | 性欧美xxxx大乳国产app| 久久亚洲视频| 国产精品无人区| 日韩视频一区二区三区| 亚洲高清免费| 久久天堂成人| 久久久久久伊人| 国产欧美日韩亚洲一区二区三区| 日韩性生活视频| 日韩午夜电影在线观看| 免费成人小视频| 美女91精品| 在线观看精品| 久久久久久久网| 久久久999精品| 国产日韩精品一区二区三区 | 久久国产视频网| 亚洲深夜影院| 一本一本久久a久久精品综合麻豆| 久久精品久久99精品久久| 久久精品成人| 国产一区二区三区四区三区四| 这里只有精品视频| 亚洲一区二三| 国产精品一区二区久久精品| 在线视频中文亚洲| 亚洲欧美在线另类| 国产人成精品一区二区三| 亚洲一区二区在线免费观看| 亚洲欧美在线网| 国产亚洲欧美在线| 久久久久久尹人网香蕉| 欧美成人嫩草网站| 99re这里只有精品6| 欧美偷拍另类| 午夜精品久久久| 欧美1区视频| 日韩亚洲综合在线| 国产精品免费电影| 久久久国产精品一区二区中文 | 99综合电影在线视频| 亚洲欧美国产精品va在线观看| 国产精品视频| 久久久久久久久久久久久9999| 欧美激情精品久久久久| 日韩小视频在线观看专区| 欧美午夜精品一区| 久久精品视频在线免费观看| 亚洲国产mv| 欧美一级欧美一级在线播放| 国产一区二区三区自拍| 另类春色校园亚洲| 99精品视频免费全部在线| 久久丁香综合五月国产三级网站| 在线观看精品视频| 国产精品国内视频| 久久在线播放| 亚洲一二三区在线| 欧美xx69| 性一交一乱一区二区洋洋av| 亚洲激情不卡| 国产精品毛片大码女人| 免费h精品视频在线播放| 亚洲伊人观看| 亚洲黄一区二区三区| 欧美在线视频观看免费网站| 亚洲激情一区二区三区| 国产区二精品视| 欧美日韩美女在线| 免费在线国产精品| 亚洲欧美中文在线视频| 最新日韩在线视频| 蜜桃av噜噜一区二区三区| 亚洲女与黑人做爰| 日韩视频在线免费观看| 在线成人激情| 国产在线精品一区二区夜色| 欧美午夜免费| 欧美日韩亚洲高清一区二区| 久久亚洲高清| 久久精品免费| 久久av红桃一区二区小说| 亚洲在线视频观看| 亚洲手机在线|