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

隨筆 - 181  文章 - 15  trackbacks - 0
<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用鏈接

留言簿(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>
            国内外成人免费激情在线视频网站| 亚洲国产精品一区二区久| 亚洲女同性videos| 亚洲一区二区视频在线| 国产乱肥老妇国产一区二 | 欧美性天天影院| 亚洲一区二区三区久久| 亚洲伊人观看| 影音先锋亚洲视频| 亚洲精品一区二区三| 国产精品伦一区| 免费看黄裸体一级大秀欧美| 欧美电影免费观看| 性亚洲最疯狂xxxx高清| 久久久久九九九| 亚洲图中文字幕| 久久精品1区| 一本色道婷婷久久欧美| 亚洲女ⅴideoshd黑人| 亚洲电影下载| 中文高清一区| 亚洲高清自拍| 亚洲男人影院| 亚洲欧洲中文日韩久久av乱码| 日韩亚洲一区二区| 黄色成人av网| 亚洲天堂成人在线视频| 亚洲电影在线免费观看| 亚洲小说欧美另类婷婷| 亚洲第一精品影视| 亚洲一区二区三区三| 亚洲国产aⅴ天堂久久| 亚洲视频在线观看一区| 亚洲黄色大片| 欧美在线免费观看亚洲| 一区二区三区久久| 久热精品视频在线观看一区| 亚洲女人天堂成人av在线| 美女尤物久久精品| 久久久999国产| 国产精品v欧美精品∨日韩| 亚洲高清三级视频| 狠狠久久亚洲欧美| 亚洲免费视频网站| 亚洲一区二区成人在线观看| 老司机午夜精品| 久久精品成人欧美大片古装| 欧美午夜精品久久久久久浪潮| 欧美高清不卡在线| 激情一区二区三区| 欧美中日韩免费视频| 欧美一级日韩一级| 欧美视频在线视频| 日韩特黄影片| 一区二区欧美在线观看| 欧美金8天国| 亚洲国产精品久久久久秋霞蜜臀| 极品少妇一区二区三区| 欧美一区二区视频观看视频| 欧美一区二区国产| 国产精自产拍久久久久久| 一本在线高清不卡dvd| 亚洲桃花岛网站| 欧美日韩精品免费观看视频| 亚洲人成在线观看网站高清| 亚洲三级影片| 欧美高清视频www夜色资源网| 欧美大片18| 亚洲精品影视在线观看| 欧美高清在线观看| 亚洲精品自在久久| 亚洲制服av| 国产精品一二三四区| 亚洲欧美在线高清| 久久亚洲国产精品一区二区 | 欧美日韩另类字幕中文| 亚洲免费精品| 午夜精品一区二区三区在线视 | 黄色一区二区在线观看| 久久精品国产综合精品| 欧美高清不卡| 一本色道久久| 国产精品热久久久久夜色精品三区| 亚洲图中文字幕| 久久狠狠一本精品综合网| 尤物yw午夜国产精品视频| 欧美国产日韩a欧美在线观看| 亚洲三级电影在线观看| 欧美亚洲视频| 亚洲高清不卡一区| 欧美日韩少妇| 久久精选视频| 99精品国产福利在线观看免费 | 亚洲视频在线视频| 国产精品视频一区二区三区| 久久精品一区二区国产| 91久久精品国产91性色tv| 午夜精品久久久99热福利| 国内久久视频| 欧美日韩免费高清| 久久久www免费人成黑人精品 | 欧美国产大片| 亚洲欧美激情精品一区二区| 一区二区在线不卡| 欧美视频免费在线| 久久视频精品在线| 亚洲网站在线看| 亚洲高清在线| 久久精品国产91精品亚洲| 亚洲免费av片| 国内精品视频一区| 国产精品chinese| 狂野欧美激情性xxxx欧美| 亚洲午夜91| 亚洲国产综合91精品麻豆| 久久精品国产第一区二区三区| 日韩小视频在线观看专区| 国产综合香蕉五月婷在线| 欧美私人啪啪vps| 欧美成人免费全部| 久久精品系列| 欧美一区二区三区在线| 亚洲视频在线免费观看| 亚洲精品在线免费| 欧美国产精品一区| 久热这里只精品99re8久| 欧美资源在线| 午夜亚洲激情| 亚洲网站视频| 一区二区高清视频| 亚洲精品欧美日韩| 亚洲韩国一区二区三区| 精品99视频| 激情一区二区| 精品999在线播放| 激情成人av| 在线不卡中文字幕播放| 国产欧美一区二区三区视频| 国产精品国产三级国产aⅴ无密码| 欧美精品在欧美一区二区少妇| 男女激情视频一区| 欧美88av| 欧美精品在线观看| 欧美理论视频| 欧美调教vk| 国产乱子伦一区二区三区国色天香| 国产精品vvv| 国产毛片精品视频| 国产日韩一区二区三区在线| 国产一区自拍视频| 伊人婷婷欧美激情| 亚洲激情不卡| 日韩亚洲视频在线| 亚洲一区二区三区中文字幕| 亚洲一区精彩视频| 久久成人18免费观看| 久久香蕉精品| 亚洲国产天堂久久国产91| 亚洲毛片网站| 亚洲欧美高清| 久久全国免费视频| 欧美激情中文不卡| 国产精品久久毛片a| 国产主播一区| 亚洲青色在线| 午夜精品久久| 另类成人小视频在线| 亚洲欧洲免费视频| 亚洲自拍偷拍麻豆| 久久久亚洲精品一区二区三区| 欧美激情导航| 国产精品制服诱惑| 91久久久国产精品| 亚洲欧美资源在线| 欧美高清在线一区二区| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美成人午夜剧场免费观看| 欧美日韩亚洲一区二区三区在线| 国产精品久久久久久久久免费樱桃| 国产午夜亚洲精品羞羞网站| 亚洲成色777777在线观看影院| 一本大道久久a久久综合婷婷 | 亚洲第一精品夜夜躁人人躁| 中文亚洲视频在线| 裸体女人亚洲精品一区| 制服丝袜激情欧洲亚洲| 久热精品视频在线观看一区| 国产精品日韩| 一区二区国产日产| 欧美大片免费观看| 性欧美xxxx视频在线观看| 欧美日韩伦理在线| 亚洲国产精品一区二区尤物区 | 亚洲国产精品成人va在线观看| 亚洲一区三区电影在线观看| 欧美肥婆在线| 久久精品国产亚洲5555| 国产精品视频一二三| 这里只有精品视频| 亚洲第一天堂无码专区|