胡蕊蕊
(西京學(xué)院,陜西西安,710123)
Java Web程序運(yùn)用中泛型DAO的作用
胡蕊蕊
(西京學(xué)院,陜西西安,710123)
將泛型DAO模式加入到Java Web程序中,能夠使Java Web程序具有更好的維護(hù)性、擴(kuò)展性和復(fù)用性,能夠改善傳統(tǒng)Java Web程序中的缺點(diǎn),運(yùn)算性能得到大幅度的提高,同時(shí)還增強(qiáng)了程序的安全性。
Spring框架;DAO模式;Java Web程序
在互聯(lián)網(wǎng)領(lǐng)域中運(yùn)用的Java技術(shù)就稱為Java Web技術(shù)。隨著人們對(duì)軟件功能需求的不斷提高,Java技術(shù)也在不斷的升級(jí)和改造中。泛型DAO模式的開(kāi)發(fā)是以Java泛型類的提出為基礎(chǔ)的,傳統(tǒng)Java程序開(kāi)發(fā)框架結(jié)構(gòu)為三層框架結(jié)構(gòu),包括JPA層,Spring層以及Struts層等,在程序?qū)嶋H運(yùn)行中,這種框架結(jié)構(gòu)存在很多的不足,無(wú)法保證程序運(yùn)行的安全,因此本文提出將DAO模式應(yīng)用到Java Web程序開(kāi)發(fā)中,改善傳統(tǒng)Java技術(shù)安全性、兼容性以及復(fù)用性差等缺點(diǎn)。
程序和對(duì)象之間交流的第一窗口就是由數(shù)據(jù)訪問(wèn)窗口,也就是DAO。該數(shù)據(jù)訪問(wèn)窗口能夠?qū)崿F(xiàn)訪問(wèn)持久化數(shù)據(jù)和數(shù)據(jù)之間關(guān)系的映射。數(shù)據(jù)訪問(wèn)窗口是數(shù)據(jù)資料庫(kù)的上層,同時(shí)也是業(yè)務(wù)邏輯的下層。這就可以將業(yè)務(wù)邏輯處理和數(shù)據(jù)訪問(wèn)操作分割開(kāi)來(lái),通過(guò)這種方法減少訪問(wèn)層和業(yè)務(wù)層之間的重疊和交叉。訪問(wèn)Access數(shù)據(jù)庫(kù)的一種比較有效的方法就是利用DAO模式。除此之外,大量文件需要儲(chǔ)存、程序可讀性差、代碼繁瑣是困擾當(dāng)前程序開(kāi)發(fā)的最大問(wèn)題,急需設(shè)計(jì)人員進(jìn)行解決。而該模式的引入能夠明顯增強(qiáng)程序的可讀性、提高程序的安全性,實(shí)現(xiàn)面向接口的多態(tài)化的編程。
傳統(tǒng)Jave技術(shù)架構(gòu)建立方法為:首先分別進(jìn)行數(shù)據(jù)訪問(wèn)層、業(yè)務(wù)處理層以及表示層的編程,之后在每一層中設(shè)計(jì)專門的接口。而在泛型DAO模式中,數(shù)據(jù)訪問(wèn)層和業(yè)務(wù)處理層是相連接的,并且業(yè)務(wù)邏輯層的接口位于數(shù)據(jù)訪問(wèn)層中。
Hibernate框架是進(jìn)行數(shù)據(jù)訪問(wèn)層搭建的主要框架,將Fa?ade接口和模塊入口相接,之后在對(duì)其實(shí)現(xiàn)類進(jìn)行定義和屬性規(guī)定,最后進(jìn)行接口的設(shè)計(jì)。數(shù)據(jù)庫(kù)的刷星、閱讀、創(chuàng)建等操作都由其完成。利用EHD操作和泛型學(xué)習(xí)法可以進(jìn)行實(shí)體DAO模式的創(chuàng)建,這樣,CRUD等操作也就會(huì)通過(guò)實(shí)體DAO模式實(shí)現(xiàn)。
泛型DAO模式是對(duì)傳統(tǒng)DAO模式的修改和升級(jí),其主要內(nèi)容就是進(jìn)行DAO模式的抽象化設(shè)計(jì),同時(shí)進(jìn)行抽象化DAO模式的實(shí)現(xiàn),CRUD操作是抽象化DAO模式實(shí)現(xiàn)的主要內(nèi)容,通常以下幾種方法完成抽象化DAO模式的實(shí)現(xiàn):一是在實(shí)現(xiàn)方法直接進(jìn)行泛型的定義;二是在基本的類和接口上直接進(jìn)行泛型的定義。
泛型DAO模式的引入使程序具有更好的復(fù)用性,程序設(shè)計(jì)語(yǔ)言變得更為簡(jiǎn)單,在程序運(yùn)行結(jié)束之后進(jìn)行類型的檢查,通過(guò)這種方法避免程序在運(yùn)行過(guò)程中產(chǎn)生的各種突發(fā)問(wèn)題,使程序的運(yùn)行速度得到了明顯的改善。Entity類的管理是由泛型模式執(zhí)行,如果選址該類中的CRUD操作不僅可以使程序具有良好的性能,而且還可以簡(jiǎn)化編程過(guò)程,使編程出錯(cuò)率大大降低。泛型DAO模式能夠有效的完成類之間的轉(zhuǎn)換,減少類轉(zhuǎn)換的錯(cuò)誤,而且儲(chǔ)存位置選擇性更為廣泛,各種模塊和子類的存儲(chǔ)時(shí)間更為長(zhǎng)久。
3.1 查詢功能設(shè)計(jì)
查詢功能的設(shè)計(jì)是泛型模式開(kāi)發(fā)過(guò)程中難點(diǎn),泛型模式中進(jìn)行所有程序設(shè)計(jì)時(shí)一個(gè)必須的模塊就是查詢模塊,主要的查詢方法包括以下三種:一是根據(jù)條件進(jìn)行搜索結(jié)果的查詢;二是根據(jù)排列順序進(jìn)行搜索結(jié)果的查詢;三是將頁(yè)碼分開(kāi)進(jìn)行搜索結(jié)果的查詢,下面分別對(duì)這三種查詢方法進(jìn)行詳細(xì)的論述。
(1)根據(jù)條件進(jìn)行搜索結(jié)果的查詢,在對(duì)搜索結(jié)果進(jìn)行查詢時(shí),可以使用不同的條件,所以應(yīng)該對(duì)每種條件的查詢方式進(jìn)行探討,同時(shí)通過(guò)Map映射來(lái)存儲(chǔ)這些條件和所對(duì)應(yīng)的查詢結(jié)果。通常而言,在一次查詢中,會(huì)有多種條件,一個(gè)條件是包含在另一個(gè)條件內(nèi)部的,只有完成了該條件的查詢,才能夠完成下一條件的查詢,所以在利用Map進(jìn)行查詢條件和查詢結(jié)果存儲(chǔ)的過(guò)程中,必須要按照一定的順序,此時(shí)就需要Map類的支持。
(2)根據(jù)排列順序進(jìn)行搜索結(jié)果的查詢,在進(jìn)行這種查詢時(shí),首先要對(duì)搜索結(jié)果進(jìn)行排序處理,通常是以用戶名為排列的關(guān)鍵字段,根據(jù)用戶名大小從大到小對(duì)搜索結(jié)果進(jìn)行排序。
(3)將頁(yè)碼分開(kāi)進(jìn)行搜索結(jié)果的查詢,在進(jìn)行這種類型查詢時(shí),首先要統(tǒng)計(jì)每種搜索結(jié)果出現(xiàn)的次數(shù),同時(shí)找出出現(xiàn)次數(shù)最多的搜索結(jié)果,之后要給出每一條搜索結(jié)果所對(duì)應(yīng)的具體位置。
3.2 主鍵查詢功能的設(shè)計(jì)
在進(jìn)行JavaEE程序設(shè)計(jì)中一種常見(jiàn)的設(shè)計(jì)模式就是泛型模式。傳統(tǒng)模式主要應(yīng)用于數(shù)據(jù)持久層中,數(shù)據(jù)持久層中不同的對(duì)象有著不同模式,每一種模式都有著不同的CRUD操作屬性,進(jìn)行DO操作。主鍵查詢?cè)贒AO模式中是不允許,但可以進(jìn)行其他類型的查詢,DO集合是DAO模式查詢結(jié)果返回值。泛型模式的出現(xiàn)可以很好的解決查詢安全性的問(wèn)題。在泛型模式中,使用的查詢接口為Java對(duì)象合集,其中包含查詢之前對(duì)象屬性和類型以及查詢之后對(duì)象屬性和類型,確保查詢的一致性,能夠使查詢過(guò)程中數(shù)據(jù)轉(zhuǎn)換的出錯(cuò)率降到最低。
傳統(tǒng)Java技術(shù)的三種框架,這三種框架分別為JPA框架、Spring框架以及Struts框架。在泛型模式中,結(jié)構(gòu)層次分別為:第一層為數(shù)據(jù)源層;第二層為服務(wù)層;第三層為動(dòng)作層,下面分別對(duì)這三種層次進(jìn)行論述。
4.1 數(shù)據(jù)源層
Spring架構(gòu)中主要的數(shù)據(jù)實(shí)體為事物管理器、實(shí)體管理器以及配置數(shù)據(jù)等,而JPA架構(gòu)中主要的數(shù)據(jù)實(shí)體為持久化單元。
4.2 用戶實(shí)體的建立
在進(jìn)行用戶實(shí)體構(gòu)建時(shí),首先需要在數(shù)據(jù)庫(kù)中進(jìn)行用戶數(shù)據(jù)表的構(gòu)建,表中包含了用戶實(shí)體,用戶實(shí)體的各種屬性都要添加到用戶數(shù)據(jù)表中,同時(shí)添加數(shù)據(jù)收集和重置操作數(shù)據(jù),并對(duì)數(shù)據(jù)實(shí)體和數(shù)據(jù)映射之間的關(guān)系進(jìn)行注釋和說(shuō)明。
4.3 構(gòu)建程序業(yè)務(wù)層
程序業(yè)務(wù)層的主要作用就是進(jìn)行業(yè)務(wù)邏輯關(guān)系的處理,一般業(yè)務(wù)層構(gòu)建的方法就是在DAO模式下進(jìn)行數(shù)據(jù)源和操作屬性關(guān)系映射的定義。泛型模式是傳統(tǒng)模式一種抽象化的處理方法,這種方法優(yōu)點(diǎn)包括以下三點(diǎn):一是操作簡(jiǎn)單;二是設(shè)計(jì)方便;三是操作效率較高。
4.4 進(jìn)行對(duì)象動(dòng)作的定義
在spring框架中進(jìn)行對(duì)象動(dòng)作的定義,同時(shí)將對(duì)象動(dòng)作添加到對(duì)象服務(wù)當(dāng)中。
本文在同一程序設(shè)計(jì)中分別使用了傳統(tǒng)模式以及改進(jìn)之后的泛型模式,它們的運(yùn)行結(jié)果如下。
(1)利用傳統(tǒng)模式編寫的程序在進(jìn)行文件類型設(shè)計(jì)和屬性提取時(shí),需要添加人工動(dòng)作,而且查詢結(jié)果和過(guò)程中保密性差,安全隱患較多,編程語(yǔ)言復(fù)雜,較難讀懂,編程代碼龐大冗雜。(2)泛型模式所編寫的程序具有更好的安全性和保密性,信息被竊取的可能性大大降低,并且和傳統(tǒng)模式相比,泛型模式編寫的程序文件數(shù)量更少,可讀性更加,代碼得到了很大的簡(jiǎn)化。
泛型DAO模式整合了傳統(tǒng)Java程序開(kāi)發(fā)框架中的三種層次,使程序開(kāi)發(fā)具有更為優(yōu)良的性能,程序運(yùn)行更為安全,信息傳遞保密性更強(qiáng),代碼具有更好的可讀性,所以泛型DAO模式將是未來(lái)使用最多的一種的模式。
[1]孟晨,趙春亮,張建國(guó).泛型DAO模式在Java Web開(kāi)發(fā)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2012,(01):175-177+210.
Java Web program using generic DAO
Hu Ruirui
(Xijing University,Xi'an Shaanxi,710123)
Join Java generic DAO mode Web programs, promoting Java Web programs can improve the shortcomings of traditional Java Web programs, performance is improved, but also enhances the safety of the procedure.
framework for Spring; DAO mode; Java Web program
T快速應(yīng)用開(kāi)發(fā)框架數(shù)據(jù)持久層的一種實(shí)現(xiàn)模式[J].電子科技大學(xué)
年期,2009.05.