亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Hibernate框架的數(shù)據(jù)持久層架構設計及應用*

        2011-05-12 02:47:30劉德山楊彬彬
        關鍵詞:數(shù)據(jù)源架構邏輯

        劉德山,楊彬彬

        (遼寧師范大學 計算機與信息技術學院,遼寧 大連 116029)

        在Web應用系統(tǒng)中,Web服務器作為連接客戶端和數(shù)據(jù)庫服務器的一個中間層,既要對客戶端提出的請求進行業(yè)務分析和處理,又要訪問數(shù)據(jù)庫并與數(shù)據(jù)庫進行交互。當業(yè)務邏輯代碼中包含數(shù)據(jù)訪問代碼時,將給系統(tǒng)的修改和維護帶來很大困難,同時也不利于以后在開發(fā)類似系統(tǒng)中進行大粒度的軟件重用。因此有必要把功能層劃分為業(yè)務邏輯層和持久層。業(yè)務邏輯層專注于業(yè)務邏輯的分析和處理,持久層專注于與數(shù)據(jù)庫交互進行數(shù)據(jù)的持久化工作,并提供一個標準的接口供業(yè)務邏輯層調(diào)用。通過這樣一個層次的劃分,實現(xiàn)了高效、清晰的專業(yè)分工和職責劃分,既實現(xiàn)了功能層中業(yè)務邏輯和數(shù)據(jù)邏輯之間的松耦合關系,又利于系統(tǒng)的修改、維護和軟件重用[1]。

        目前的J2EE應用系統(tǒng)開發(fā)中已經(jīng)存在不少框架。在系統(tǒng)架構分析時,如何應用已有框架為應用系統(tǒng)量身定做一個合適的架構,對J2EE設計開發(fā)者提出了挑戰(zhàn)。本文基于Hibernate框架采用DAO設計模式,設計了數(shù)據(jù)持久層架構。并將其應用于問卷調(diào)查系統(tǒng),實現(xiàn)了業(yè)務邏輯和數(shù)據(jù)邏輯的松散耦合,提高了系統(tǒng)的開發(fā)效率和軟件重用性。

        1 Hibernate技術

        1.1 Hibernate框架

        Hibernate是采用ORM映射機制進行持久層數(shù)據(jù)開發(fā)的工具,它是Java應用程序和關系數(shù)據(jù)庫中間的橋梁,負責對Java對象和關系型數(shù)據(jù)之間映射[2]。其架構體系如圖1所示。

        圖1 Hibernate數(shù)據(jù)持久化應用結構

        Hibernate內(nèi)部封裝JDBC進行訪問數(shù)據(jù)庫操作,其向上層應用對象提供面向?qū)ο蟮臄?shù)據(jù)庫訪問API,使開發(fā)者能充分運用面向?qū)ο蟮木幊趟季S操作數(shù)據(jù)庫,而無需關心底層數(shù)據(jù)庫操作。Hibernate自身通過hibernate.cfg.xml和類的映射文件將類和數(shù)據(jù)庫相映射,應用程序通過Hibernate及持久化對象類直接訪問底層數(shù)據(jù)庫。

        1.2 Hibernate核心接口

        利用Hibernate進行數(shù)據(jù)持久化操作,至少會用到下列核心接口:Configuration接口負責配置啟動Hibernate并創(chuàng)建SessionFactory對象;SessionFactory接口產(chǎn)生Session實例的工廠類,負責初始化Hibernate并創(chuàng)建Session對象;Session接口是Hibernate進行持久化操作的基礎,相當于JDBC中的Connection對象所起的作用。Session提供了一系列的持久化操作方法,如保存、更新、刪除、查詢等;Transaction接口負責管理事務;Query和Criteria接口負責執(zhí)行數(shù)據(jù)庫查詢[3]。

        2 DAO設計模式

        DAO(Data Access Object)模式稱為數(shù)據(jù)訪問對象模式,是Java EE核心模式之一,其主要的功能是在業(yè)務核心方法和具體數(shù)據(jù)源之間再增加一層DAO接口及其實現(xiàn)類。該模式的本質(zhì)是向外部提供一個訪問數(shù)據(jù)源的統(tǒng)一接口,對外隱藏操作數(shù)據(jù)源的實現(xiàn)細節(jié),以此實現(xiàn)業(yè)務邏輯層與DB的解耦[4]。這是因為在實際的應用過程中,應用程序所面對的數(shù)據(jù)源往往是多種多樣的,不同數(shù)據(jù)源的連接方式、數(shù)據(jù)訪問方式會有明顯差異,導致了需要訪問數(shù)據(jù)源的組件的代碼實現(xiàn)方式與數(shù)據(jù)源的類型有著密切的關系,組件和數(shù)據(jù)源之間的這種緊耦合關系也就導致了整個應用系統(tǒng)難以在不同數(shù)據(jù)源之間進行遷移。使用了DAO模式后,即使系統(tǒng)需要進行數(shù)據(jù)源的遷移,也只需在DAO模式內(nèi)部進行數(shù)據(jù)源訪問代碼的修改,而不會涉及上層調(diào)用代碼,從而提高了軟件可維護性。

        3 數(shù)據(jù)持久層架構設計及實現(xiàn)

        3.1 數(shù)據(jù)持久層框架設計

        在應用程序和數(shù)據(jù)庫之間構建數(shù)據(jù)持久層,可降低J2EE應用與數(shù)據(jù)庫的耦合度,并簡化程序開發(fā)。基于Hibernate框架采用DAO模式設計的數(shù)據(jù)持久層整體架構如圖2所示。

        圖2 數(shù)據(jù)持久層架構

        業(yè)務邏輯是整個框架的業(yè)務處理的核心部分,由業(yè)務邏輯接口、接口實現(xiàn)類和配置文件等組成。它接收控制層的各類調(diào)用請求,控制著系統(tǒng)邏輯的實現(xiàn)和處理,并通過調(diào)用數(shù)據(jù)持久層的DAO接口完成數(shù)據(jù)的存取操作。業(yè)務邏輯接口向控制層或其他業(yè)務邏輯接口實現(xiàn)類提供各種業(yè)務邏輯接口方法,接口實現(xiàn)類則對這些己定義的接口進行具體實現(xiàn)。

        數(shù)據(jù)持久層使用DAO來抽象和封裝所有對數(shù)據(jù)源的訪問,DAO管理著數(shù)據(jù)源的連接以便檢索和存儲數(shù)據(jù),DAO通過DAO工廠管理,DAO工廠負責生成DAO組件實例,并維護DAO實例;業(yè)務邏輯組件不與DAO組件的實現(xiàn)類耦合,只與DAO組件的接口耦合;DAO實現(xiàn)類中封裝Hibernate API來完成與持久化類相關的業(yè)務邏輯操作。

        Hibernate配置文件的主要工作是進行SessionFactory配置、關系型數(shù)據(jù)庫“方言”與加載持久化類對應的映射文件等。映射文件用來聲明Hibernate中持久化類的屬性與數(shù)據(jù)庫對應表之間字段的映射關系。

        數(shù)據(jù)持久化層架構的操作流程為:業(yè)務邏輯模塊調(diào)用DAOFactory,DAOFactory生成相應的 DAO接口及實現(xiàn)類,DAO實現(xiàn)類中封裝Hibernate API來訪問持久化類,通過O/R映射文件聲明持久化類與關系數(shù)據(jù)庫的映射,最終實現(xiàn)對數(shù)據(jù)庫的操作。

        3.2 數(shù)據(jù)持久層框架的應用——解決方案及實現(xiàn)

        本設計的數(shù)據(jù)持久層架構,作為數(shù)據(jù)持久層解決方案應用于問卷調(diào)查系統(tǒng),最大限度地降低了系統(tǒng)內(nèi)部各模塊、子系統(tǒng)之間的耦合性,保證了持久層的業(yè)務邏輯層相對穩(wěn)定,基本不需要持久層的調(diào)整改變而進行邏輯層的變動。問卷調(diào)查系統(tǒng)由問題管理、問卷管理、統(tǒng)計管理、用戶管理、學生信息管理等模塊構成,其數(shù)據(jù)持久層的具體組織結構如圖3所示[5]。

        圖3 問卷調(diào)查系統(tǒng)數(shù)據(jù)持久層組織結構

        4 數(shù)據(jù)持久層的實現(xiàn)

        4.1 持久化類及對象/關系映射文件

        4.1.1持久化類

        持久化類的對象PO(Persistenct Object)是一個簡單Java對象(POJO),一個PO代表了與數(shù)據(jù)庫表中某條記錄相對應的Hibernate實體,PO的變化在事務提交時反映到實際的數(shù)據(jù)庫表中。Hibernate中的持久化類符合JavaBean的規(guī)范,包括一些屬性和對屬性的訪問方法。圖4是問卷調(diào)查系統(tǒng)中Question實體類的模型圖[6]??梢钥闯?,除了無意義的主屬性只能被獲取以外,每一個屬性都有被外部對象獲取(get)和設置(set)兩種方法,通過它們可以獲得對象的屬性值并實現(xiàn)對象之間的導航。

        4.1.2對象/關系映射文件

        映射文件用一個XML格式的映射描述文檔來聲明Hibernate中持久化類的屬性與數(shù)據(jù)庫對應表之間字段的映射關系,該文件中聲明的屬性名稱要與對應數(shù)據(jù)表中的字段名稱相同,同時也要與持久化類中所包含的屬性名稱相同。

        圖4 實體類模型圖

        4.2 Hibernate配置

        為了用Hibernate進行持久化實現(xiàn),還需要在應用程序的包里放置一個配置文件,以便Hibernate能正確地完成數(shù)據(jù)庫連接等各種配置和初始化。由于映射文件可以在XML格式的配置文件中進行聲明,在程序中不必調(diào)用Configuration類的addClass方法來加載映射文件,因此這種格式的配置文件可以提高應用程序的可維護性。

        4.3 數(shù)據(jù)持久層的DAO接口及實現(xiàn)類

        數(shù)據(jù)持久化層采用Hibernate作為中間件,使用DAO設計模式實現(xiàn)對數(shù)據(jù)庫的訪問。DAO模式的實現(xiàn)包括DAO接口和DAO實現(xiàn)類兩部分。DAO接口負責定義訪問特定持久化類所對應的抽象業(yè)務邏輯方法;DAO實現(xiàn)類負責利用Hibernate API實現(xiàn)DAO接口所定義的抽象方法的具體實現(xiàn)。

        問卷調(diào)查系統(tǒng)在實現(xiàn)DAO模式時,首先創(chuàng)建了HibernateBasicDao, 該類繼承 Spring框架提供的HibernateDaoSupport類,HibernateBasicDao類封裝了對數(shù)據(jù)庫持久化的操作,任何它的子類只要使用它的方法就可以實現(xiàn)對數(shù)據(jù)庫的持久化操作。最后使每個DAO實現(xiàn)類都繼承HibernateBasicDao類實現(xiàn)數(shù)據(jù)庫的持久化操作。

        圖5描述了問題DAO接口及其實現(xiàn)類,它封裝了對問題的基本操作。其中,delete方法刪除問題信息,getQuestionById方法通過 question的 Id獲得,getQuestionInCurPape方法通過當前頁數(shù)獲得question的具體類,query方法更新問題信息等。限于篇幅,其他DAO接口及實現(xiàn)類的設計不一一給出。

        圖5 問題DAO接口及其實現(xiàn)類

        在基于J2EE的應用中,系統(tǒng)的數(shù)據(jù)持久層代表著某個系統(tǒng)中一個相對獨立界限明確的邏輯層次,在這個層次中,將數(shù)據(jù)的使用者和數(shù)據(jù)實體相關聯(lián),負責對數(shù)據(jù)庫存儲數(shù)據(jù),同時也負責數(shù)據(jù)的檢索、更新和刪除,實現(xiàn)數(shù)據(jù)的讀取和持久化操作。本文運用Hibernate框架技術設計了一套數(shù)據(jù)持久層架構體系,并將其作為數(shù)據(jù)持久層解決方案應用于問卷調(diào)查系統(tǒng)。實踐結果表明,數(shù)據(jù)持久層架構的應用,降低了數(shù)據(jù)持久邏輯與業(yè)務邏輯的耦合度,簡化了開發(fā)過程,優(yōu)化了數(shù)據(jù)訪問操作,增強了系統(tǒng)擴展性和可維護性。

        [1]郭善飛.基于J2EE的數(shù)據(jù)持久層組件的設計與實現(xiàn)[D].北京:北京郵電大學,2009.

        [2]張飛,張建.基于 Spring與 Hibernate的數(shù)據(jù)庫訪問技術研究[J].計算機工程與設計,2009,30(7):1669.

        [3]汪萌,曲俊華.基于Hibernate技術的持久層解決方案及實現(xiàn)[J].計算機系統(tǒng)應用,2010,19(3):155.

        [4]歐陽宏基.一種基于DAO設計模式與Hibernate框架的數(shù)據(jù)持久化層模型 [J].微計算機應用,2009,30(3):36-37.

        [5]嚴海.基于Struts+Spring+Hibernate框架構建WEB應用的設計與實現(xiàn)[D].西安:西安電子科技大學.2010.

        [6]吳京慧.基于Hibernate對象持久化Web應用的研究[J].計算機應用與軟件,2009,26(2):90-91.

        猜你喜歡
        數(shù)據(jù)源架構邏輯
        基于FPGA的RNN硬件加速架構
        刑事印證證明準確達成的邏輯反思
        法律方法(2022年2期)2022-10-20 06:44:24
        邏輯
        創(chuàng)新的邏輯
        功能架構在電子電氣架構開發(fā)中的應用和實踐
        汽車工程(2021年12期)2021-03-08 02:34:30
        Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
        女人買買買的神邏輯
        37°女人(2017年11期)2017-11-14 20:27:40
        LSN DCI EVPN VxLAN組網(wǎng)架構研究及實現(xiàn)
        電信科學(2017年6期)2017-07-01 15:45:17
        基于不同網(wǎng)絡數(shù)據(jù)源的期刊評價研究
        基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評價算法
        国内嫩模自拍诱惑免费视频| 中文字幕无码免费久久9一区9| 日韩精品一区二区三区在线观看的 | a级大胆欧美人体大胆666| 亚洲红怡院| 国产一级一厂片内射视频播放 | 中国丰满熟妇xxxx性| 伊人一道本| 一本之道加勒比在线观看| 在线免费观看一区二区| 军人粗大的内捧猛烈进出视频| 国产人成亚洲第一网站在线播放 | 噜噜综合亚洲av中文无码| 日本高清色倩视频在线观看 | 天堂av中文在线官网| 亚洲天堂av三区四区不卡| 国产成人精品电影在线观看 | 日韩精品专区在线观看| 国产精品ⅴ无码大片在线看| 亚洲色欲Aⅴ无码一区二区| 亚洲三区av在线播放| 无遮挡1000部拍拍拍免费| 国产乱人伦av在线无码| 中文字幕一区二区三区日韩网| 少妇被爽到高潮喷水免费福利| 久久久久久久综合综合狠狠| 日韩在线免费| 国内精品久久人妻互换| 国产亚洲欧洲aⅴ综合一区| 一本久久a久久精品亚洲| yw193.can尤物国产在线网页| 东京热加勒比久久精品| 粗大的内捧猛烈进出视频| 无码一级视频在线| 国内精品少妇久久精品| 精品国品一二三产品区别在线观看| 成人做爰69片免费看网站| 国产性感丝袜美女av| 精品欧美一区二区三区久久久| 国产乱子伦在线观看| 美女精品国产一区二区三区|