999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

DAO模式在數(shù)據(jù)訪問中的應(yīng)用

2008-04-12 00:00:00幺闊強
中國新技術(shù)新產(chǎn)品 2008年20期

摘要:J2EE模型提供了一個很好的企業(yè)應(yīng)用框架及解決方法,提供了靈活的技術(shù)選擇,由于所有的J2EE應(yīng)用都需要訪問持久性數(shù)據(jù)資源,因此實現(xiàn)和封裝J2EE數(shù)據(jù)訪問層越來越成為構(gòu)建穩(wěn)定、健壯和靈活的J2EE應(yīng)用的基礎(chǔ)。論文重點介紹了如何使用DAO模式來解決數(shù)據(jù)訪問客戶端對持久性存儲的問題,并給出了一種解決DAO模式對象類型依賴問題的方法。

關(guān)鍵詞:數(shù)據(jù)訪問對象(DAO); J2EE; Enterprise JavaBean (EJB)

1引言

隨著軟件系統(tǒng)的規(guī)模和復(fù)雜性的增加,人們希望將設(shè)計模式的思想應(yīng)用于基于J2EE的企業(yè)信息化系統(tǒng)中,使開發(fā)者減少在J2EE平臺開發(fā)過程中的重復(fù)投資,這樣不僅會大幅度的減少開發(fā)的工作量,也會為以后整個系統(tǒng)的維護(hù)和升級打下一個堅實的基礎(chǔ)。本文主要介紹設(shè)計模式和其中的DAO(數(shù)據(jù)訪問對象)模式的概念及功能,探討DAO模式在哈爾濱塑料五廠企業(yè)信息化系統(tǒng)中的應(yīng)用。

2設(shè)計模式概述

設(shè)計模式是指情景中標(biāo)準(zhǔn)設(shè)計問題的重復(fù)性解決方案,它關(guān)注的是特定設(shè)計問題及其解決方案。在每種模式中均描述一個設(shè)計問題和一個通用的經(jīng)過驗證的解決方案。這個解決方案是對反復(fù)出現(xiàn)的設(shè)計結(jié)構(gòu)進(jìn)行識別和抽象得到的,它通常由多個類組成。在軟件系統(tǒng)的設(shè)計中,設(shè)計模式使代碼編寫真正工程化,為軟件系統(tǒng)的設(shè)計帶來諸多好處。

3 DAO設(shè)計模式

J2EE平臺是開發(fā)和運行企業(yè)級Web應(yīng)用的標(biāo)準(zhǔn),可以用于開發(fā)大型的、多層次的以及分布式的企業(yè)級Web應(yīng)用系統(tǒng)。J2EE技術(shù)為組件開發(fā)提供了廣泛的支持,同時也提供了豐富的開發(fā)工具和服務(wù),便于開發(fā)模塊化的,可重用的業(yè)務(wù)邏輯。

EJB (企業(yè)級Java Bean)的設(shè)計是J2EE應(yīng)用設(shè)計中的核心模塊。目前,EJB的設(shè)計模式有幾十種,如何選擇適合自己項目的模式是EJB設(shè)計的關(guān)鍵問題,也是最難解決的問題。

3.1 DAO模式介紹

DAO簡單的說就是對持久化層的訪問路徑,客戶端得到一個DAO對象,由DAO對象訪問數(shù)據(jù)源,數(shù)據(jù)源創(chuàng)建結(jié)果集并將它返回給DAO對象,DAO對象根據(jù)結(jié)果集創(chuàng)造出數(shù)據(jù)對象并返回客戶端。這些元素之間的動態(tài)協(xié)作過程是由該模式以下幾部分完成的:

DAO (DataAccessObject)是該模式的主要對象,它封裝了底層數(shù)據(jù)訪問實現(xiàn),以保證對數(shù)據(jù)源的透明訪問。用戶可以把數(shù)據(jù)加載和存儲操作委托給數(shù)據(jù)庫訪問對象。

數(shù)據(jù)源(DataSource)代表數(shù)據(jù)源實現(xiàn)。數(shù)據(jù)源可以是RDBMS, OODBMS,XM L資料庫、純文件系統(tǒng)等等。

結(jié)果集(ResultSet)是DAO對象訪問數(shù)據(jù)源得到的結(jié)果的集合,DAO可以用結(jié)果集包裝成數(shù)據(jù)對象。

客戶端(Client)使用數(shù)據(jù)對象進(jìn)行商業(yè)邏輯。

數(shù)據(jù)對象(Data Object)是數(shù)據(jù)以對象的形式描述。它由DAO對象創(chuàng)建,然后給客戶端進(jìn)行商業(yè)邏輯運算。

3.2 DAO模式的優(yōu)點

對持久化數(shù)據(jù)的訪問有良好的透明性,業(yè)務(wù)對象可以在不知道數(shù)據(jù)源實現(xiàn)細(xì)節(jié)的情況下訪問數(shù)據(jù)。由于一切數(shù)據(jù)訪問細(xì)節(jié)被數(shù)據(jù)訪問對象所隱藏,所以這種訪問過程是透明的。

數(shù)據(jù)庫有良好的可移植性。在應(yīng)用系統(tǒng)中添加數(shù)據(jù)訪問對象,可以使得應(yīng)用系統(tǒng)能夠很方便地移植到另外一種數(shù)據(jù)庫實現(xiàn)上。由于業(yè)務(wù)對象與數(shù)據(jù)實現(xiàn)是隔離的,所以在移植過程中,僅僅對數(shù)據(jù)訪問對象進(jìn)行一些變化即可。

可以減少業(yè)務(wù)對象的代碼復(fù)雜度。由于數(shù)據(jù)訪問對象可以管理所有的數(shù)據(jù)訪問細(xì)節(jié),這就簡化了業(yè)務(wù)模塊和其它數(shù)據(jù)客戶的代碼,同時也提高了應(yīng)用系統(tǒng)的整體可讀性和開發(fā)效率。

可以對數(shù)據(jù)訪問進(jìn)行集中處理。由于所有的數(shù)據(jù)訪問操作都移交給數(shù)據(jù)訪問對象,這樣應(yīng)用系統(tǒng)其它部分就與數(shù)據(jù)訪問隔離開來,而全部相關(guān)操作都由數(shù)據(jù)訪問對象集中處理,這樣也使得相關(guān)操作更加容易被維護(hù)和管理。

為了進(jìn)一步說明DAO模式的優(yōu)勢,下面以一個企業(yè)信息化系統(tǒng)為例,介紹如何在具體的項目中運用DAO模式。

3.3 DAO模式的應(yīng)用

哈工大塑料五廠的企業(yè)信息化系統(tǒng)包括成本查詢模塊、生產(chǎn)管理模塊、系統(tǒng)定義模塊、OA管理模塊、客戶關(guān)系管理模塊,現(xiàn)在以生產(chǎn)管理模塊來說明DAO模式的應(yīng)用。

生產(chǎn)管理模塊的流程是:用戶首先要根據(jù)銷售計劃查看庫存情況,然后制定生產(chǎn)計劃,交由生產(chǎn)經(jīng)理審批,批準(zhǔn)后由研發(fā)部確定最佳的工藝參數(shù),編制作業(yè)指導(dǎo)書,再交由生產(chǎn)經(jīng)理審批并實施以保證產(chǎn)品質(zhì)量。如果生產(chǎn)過程中條件發(fā)生變化,要重新進(jìn)行以上流程。

Client是客戶端,可以訪問數(shù)據(jù)源以存取數(shù)據(jù)。DataAccessObject對Client隱藏了底層的數(shù)據(jù)訪問細(xì)節(jié),使Client能透明地訪問數(shù)據(jù)源,實現(xiàn)創(chuàng)建、查找、更新和刪除等操作。DataSource代表JDBC數(shù)據(jù)源的實現(xiàn)。Data代表一個傳輸對象,它被用作數(shù)據(jù)的載體,DAO可以將數(shù)據(jù)返回給客戶端,也可以從客戶端那里接收傳輸對象形式的數(shù)據(jù),并用這些數(shù)據(jù)對數(shù)據(jù)源進(jìn)行更新。ResultSet代表一次查詢操作的結(jié)果。

用戶進(jìn)入生產(chǎn)管理子系統(tǒng)后,通過ResultSet返回的結(jié)果集查看庫存情況,再對照銷售計劃制定生產(chǎn)計劃,DataAccessObject提供在數(shù)據(jù)庫中創(chuàng)建、查找、更新和刪除Data的操作,不對任何查詢操作進(jìn)行緩存,因此不會出現(xiàn)線程或同步問題的干擾,而且DAO將數(shù)據(jù)源的實現(xiàn)細(xì)節(jié)完全隱藏起來,不必?fù)?dān)心數(shù)據(jù)源對使用者的接口的影響。當(dāng)應(yīng)用程序使用JDBC作為持久化手段時,DAO將所有對JDBC的使用都封裝在數(shù)據(jù)訪問層內(nèi)部,不會向數(shù)據(jù)訪問層之外的客戶端暴露任何屬于java.sql.*或java.x.sql.*包的異常。因此,數(shù)據(jù)訪問及操作的邏輯被封裝在了一個單獨的層次中,起到了把中間層分為兩部分的作用。

結(jié)束語

DAO模式是一種讓很多開發(fā)者都受益匪淺的功能強大的EJB設(shè)計模式。實踐證明,在EJB的設(shè)計中,適當(dāng)?shù)氖褂肈AO模式,不但可以使代碼可重用性、可拓展性增強,而且還能夠提高效率。當(dāng)然,DAO模式并不是在所有的項目中都適用,如果使用不當(dāng),反而會造成系統(tǒng)性能的下降。比如,設(shè)計該模式時增加額外的類會提高應(yīng)用程序的復(fù)雜度,對于容器管理的持久性不能利用,降低了開發(fā)效率。因此,DAO模式在許多方面還需要我們進(jìn)一步探討、改進(jìn)和擴展。

參考文獻(xiàn)

[1] Deepak Alur,John Crupi,Dan Malks.Core J2EE Paterns:Best Practices and Design Strategies[M].Second Edition,Prentice Hall ,2003:10-233.

[2] Ted Husted, Cedric Dumoulin, Georgeranciscus.Struts in action[M].Manning Publications Co,2003:56-60.

[3] 鄭人杰,殷人昆,陶永雷.實用軟件工程[M].北京:清華大學(xué)出版社,1997:45-48。

[4] 泰勒(美),李東升.JDBC數(shù)據(jù)庫編程與J2EE[M].北京:電子工業(yè)出版社,2004:23-67。

主站蜘蛛池模板: 片在线无码观看| 91在线无码精品秘九色APP | 国产成人a毛片在线| 国产亚洲精品精品精品| 国产91九色在线播放| 日本欧美一二三区色视频| 啊嗯不日本网站| 国禁国产you女视频网站| 午夜激情婷婷| 香蕉在线视频网站| 91久久偷偷做嫩草影院精品| 久久精品国产电影| 亚洲高清日韩heyzo| 色精品视频| 国产亚洲欧美日韩在线一区| 日本少妇又色又爽又高潮| 一级毛片免费的| 怡红院美国分院一区二区| 亚洲乱码在线播放| 国产免费久久精品99re不卡 | 91精品免费久久久| 99精品视频播放| 亚洲精品福利视频| 中文字幕在线不卡视频| AV天堂资源福利在线观看| 国产亚洲精品自在线| 亚洲一级毛片在线观播放| 精品国产免费观看| 国产日本欧美在线观看| 国产一区在线观看无码| 国产18在线播放| 国产一区二区三区精品欧美日韩| 亚洲嫩模喷白浆| 中文字幕 日韩 欧美| 国产99在线观看| 国产激情无码一区二区APP| 亚洲精品老司机| 精品视频一区二区观看| 国内精品视频| 18禁黄无遮挡免费动漫网站| 国产精品偷伦视频免费观看国产| 99热这里只有精品免费国产| 在线综合亚洲欧美网站| 亚洲无码91视频| 综合天天色| 72种姿势欧美久久久久大黄蕉| 久久久成年黄色视频| 国产久操视频| 久久中文无码精品| 久久99国产视频| 欧美国产成人在线| 91精品伊人久久大香线蕉| 91精选国产大片| 久久99国产综合精品女同| 欧美成人日韩| 国产99在线| 在线另类稀缺国产呦| 国产91九色在线播放| 国产欧美另类| 婷婷色中文网| 国产成人欧美| 国产日韩AV高潮在线| 波多野结衣一级毛片| 久久国产免费观看| 久久久久免费精品国产| 日韩精品无码免费专网站| 人妻中文字幕无码久久一区| 中文字幕1区2区| 国产在线观看成人91| 亚洲AⅤ综合在线欧美一区| 国产成人综合亚洲网址| 国产美女精品一区二区| 国产精品午夜福利麻豆| 欧美.成人.综合在线 | 日日噜噜夜夜狠狠视频| 久久亚洲精少妇毛片午夜无码| 欧美日本在线观看| 亚洲国产成人超福利久久精品| vvvv98国产成人综合青青| 女人18毛片一级毛片在线 | 久久精品波多野结衣| 国产理论最新国产精品视频|