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

        ?

        基于XML-關(guān)系映射數(shù)據(jù)訪問層的設(shè)計與實現(xiàn)

        2015-12-04 02:49:38張艷明
        安徽開放大學(xué)學(xué)報 2015年2期
        關(guān)鍵詞:實驗室數(shù)據(jù)庫信息

        張艷明,檀 明,鄒 樂

        (合肥學(xué)院 網(wǎng)絡(luò)與智能信息處理重點實驗室,合肥 230601)

        一、引言

        數(shù)據(jù)是一個應(yīng)用系統(tǒng)的核心,應(yīng)用系統(tǒng)所有功能的運行都依賴于數(shù)據(jù)的支持。企業(yè)級JavaEE應(yīng)用系統(tǒng)大多使用數(shù)據(jù)庫技術(shù)來存儲應(yīng)用系統(tǒng)的數(shù)據(jù),數(shù)據(jù)訪問層則是應(yīng)用系統(tǒng)中運行數(shù)據(jù)和數(shù)據(jù)庫中存儲數(shù)據(jù)之間的交互,主要包括數(shù)據(jù)的查詢、添加、修改和刪除等操作。

        本文在分析JavaEE應(yīng)用系統(tǒng)現(xiàn)有數(shù)據(jù)訪問層解決方案的基礎(chǔ)上,提出一種輕量級、可重用的數(shù)據(jù)訪問層組件實現(xiàn)方案,并應(yīng)用于合肥學(xué)院高校實驗室管理平臺項目。該方案可用于構(gòu)建企業(yè)級應(yīng)用系統(tǒng)中的數(shù)據(jù)訪問層,具有實際意義和價值。

        二、數(shù)據(jù)訪問層

        (一)JavaEE數(shù)據(jù)訪問層

        根據(jù)軟件分層設(shè)計思想的指導(dǎo),JavaEE應(yīng)用通常被劃分為四個層次:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層和數(shù)據(jù)庫層。其中,數(shù)據(jù)訪問層[1]是在對象/關(guān)系數(shù)據(jù)庫之間提供一個成功的企業(yè)級別的映射解決方案。它代表系統(tǒng)中一個相對獨立、界限明確的邏輯層次,創(chuàng)建一個集成數(shù)據(jù)庫存取邏輯的門戶,屏蔽對底層數(shù)據(jù)庫訪問的依賴性以及不同數(shù)據(jù)庫之間的差異性[2],向開發(fā)人員提供透明的數(shù)據(jù)持久化機制。數(shù)據(jù)訪問層由業(yè)務(wù)邏輯層通過接口調(diào)用,使系統(tǒng)以更松散的形式耦合,較好地達到易于維護和擴展的目標(biāo)[3]。

        (二)常見數(shù)據(jù)訪問層

        目前數(shù)據(jù)訪問層的實現(xiàn)有多種解決方案,如JDBC、EJB、ORM 等[4]。JDBC是最原始的數(shù)據(jù)訪問方法,在程序中直接編寫SQL語句進行數(shù)據(jù)庫存取,存在開發(fā)效率低下的問題。EJB實體Bean采用CMP管理策略,封裝數(shù)據(jù)訪問細(xì)節(jié),開發(fā)人員不必編寫SQL語句,但EJB實體Bean必須運行在EJB容器之中,運行環(huán)境受限,開發(fā)難度也較大。ORM(Object-Relation Mapping,對象關(guān)系映射)是目前廣泛采用的一種數(shù)據(jù)訪問層實現(xiàn)方案,Hibernate作為其中的代表者,對JDBC做了輕量級的封裝,提高了程序員開發(fā)效率,但Hibernate的設(shè)計過于靈活,運用不慎反而會導(dǎo)致程序運行效率低下。

        三、基于XML-關(guān)系映射數(shù)據(jù)訪問層的總體設(shè)計

        (一)數(shù)據(jù)訪問層設(shè)計思路

        XML具有自描述的特征,XML數(shù)據(jù)已經(jīng)成為互聯(lián)網(wǎng)上流行的數(shù)據(jù)表示格式以及應(yīng)用系統(tǒng)中數(shù)據(jù)交換的開放標(biāo)準(zhǔn)[5-6]?;赬ML-關(guān)系映射數(shù)據(jù)訪問層利用Java與XML技術(shù)相結(jié)合的優(yōu)勢,采用XML作為數(shù)據(jù)訪問層的數(shù)據(jù)交互格式,提供一種XML格式數(shù)據(jù)與關(guān)系數(shù)據(jù)之間的映射轉(zhuǎn)換方法,實現(xiàn)高效的數(shù)據(jù)庫操作。

        (二)數(shù)據(jù)訪問層總體架構(gòu)

        基于XML-關(guān)系映射數(shù)據(jù)訪問層主要包括數(shù)據(jù)庫模型組件、數(shù)據(jù)訪問控制組件和SQL動態(tài)構(gòu)建組件。數(shù)據(jù)庫模型組件負(fù)責(zé)針對關(guān)系數(shù)據(jù)庫中的表、視圖等數(shù)據(jù)結(jié)構(gòu)進行建模,構(gòu)建一組數(shù)據(jù)庫模型類用以描述表名稱、字段屬性以及表之間關(guān)聯(lián)關(guān)系等。數(shù)據(jù)庫訪問控制組件和SQL動態(tài)構(gòu)建組件負(fù)責(zé)在系統(tǒng)運行階段,根據(jù)數(shù)據(jù)庫模型組件封裝的元數(shù)據(jù)信息,結(jié)合輸入的XML格式數(shù)據(jù),動態(tài)構(gòu)造出數(shù)據(jù)庫存取訪問的SQL語句,自動完成數(shù)據(jù)庫增刪改查操作。該數(shù)據(jù)訪問層支持XML到數(shù)據(jù)庫以及數(shù)據(jù)庫查詢結(jié)果到XML之間的雙向映射轉(zhuǎn)換,位于數(shù)據(jù)庫層和業(yè)務(wù)層之間,總體架構(gòu)如圖1所示。

        四、數(shù)據(jù)訪問層的實現(xiàn)

        (一)數(shù)據(jù)庫模型組件

        通過PowerDesigner工具提供的API接口,對設(shè)計階段生成的數(shù)據(jù)庫物理模型進行編程,生成用以描述數(shù)據(jù)庫結(jié)構(gòu)信息的一個XML文件。啟動運行時,由系統(tǒng)引擎對該XML文件進行解析,構(gòu)建數(shù)據(jù)庫模型組件。

        以合肥學(xué)院高校實驗室管理平臺中的實驗室表和實驗室人員表(主從關(guān)系)為例,其數(shù)據(jù)庫物理模型(部分)如下所示:

        其生成的數(shù)據(jù)庫描述XML文件部分內(nèi)容如下:

        以上XML內(nèi)容描述了數(shù)據(jù)庫“實驗室表”sys_sys和“實驗室人員表”sys_sysry的基本結(jié)構(gòu),包括字段信息和表關(guān)聯(lián)信息等。其中,“實驗室表”中的字段“所屬實驗室”fk_sys_sssys_i為外鍵字段,參照“實驗室表”sys_sys的主鍵,cascade=“0”表示針對主表sys_sys進行更新操作時不級聯(lián)更新從表sys_sysry。XML文件中的其他描述信息,primary代表是否為主鍵,foreignkey代表是否為外鍵,mandatory代表是否允許為空,datatype代表數(shù)據(jù)類型。

        針對數(shù)據(jù)庫描述XML文件,系統(tǒng)運行時自動解析生成的數(shù)據(jù)庫模型組件包括DataBaseTable、Data-BaseColumn等。DataBaseTable類封裝一張表的基本信息,DataBaseColunmn類封裝一個表字段的基本信息。

        (二)數(shù)據(jù)訪問控制組件

        數(shù)據(jù)訪問控制組件負(fù)責(zé)XML格式數(shù)據(jù)與關(guān)系數(shù)據(jù)之間的映射轉(zhuǎn)換,支持在一個XML文檔中包含多個表的數(shù)據(jù)。表之間可以是主從關(guān)系,主從關(guān)系可以嵌套。針對增刪改等更新操作,將業(yè)務(wù)層傳遞過來的XML格式數(shù)據(jù)持久化進關(guān)系數(shù)據(jù)庫,針對查詢操作,對數(shù)據(jù)庫查詢返回的結(jié)果集轉(zhuǎn)換為XML格式數(shù)據(jù)。

        數(shù)據(jù)訪問控制組件的主要方法如表1。

        表1 數(shù)據(jù)訪問控制組件主要方法描述

        以添加實驗室及實驗室所屬人員的操作為例,下面是描述信息添加的XML部分?jǐn)?shù)據(jù)內(nèi)容。

        definition屬性action定義具體操作,“0”代表插入操作。以上XML內(nèi)容表示向數(shù)據(jù)庫“實驗室表”sys_sys添加一條實驗室基本信息,同時向“實驗室人員表”sys_sysry添加兩條實驗室所屬人員信息。文檔元素名與數(shù)據(jù)表名一致,元素屬性名與表字段名稱一致。

        數(shù)據(jù)訪問控制組件的xmlDataToDB方法采用DOM4J技術(shù),遍歷XML文檔樹節(jié)點數(shù)據(jù),利用遞歸算法完成對主從表的數(shù)據(jù)添加。部分代碼片段如下:

        其中,executeInsertSQL方法負(fù)責(zé)動態(tài)生成具體的插入SQL語句,完成對數(shù)據(jù)庫的實際更新。該方法由SQL動態(tài)構(gòu)建組件提供。

        (三)SQL動態(tài)構(gòu)建組件

        數(shù)據(jù)訪問控制組件的運行依賴于SQL動態(tài)構(gòu)建組件。SQL動態(tài)構(gòu)建組件調(diào)用底層JDBC函數(shù),完成具體的數(shù)據(jù)庫操作,主要包括executeInsertSQL、executeUpdateSQL、executeDeleteSQL、execute-QuerySQL等方法。該組件的實現(xiàn)重點是能夠支持大部分可用JDBC訪問的數(shù)據(jù)庫,支持字符串形式的XML元素屬性值與關(guān)系數(shù)據(jù)庫表不同類型字段之間的映射,支持大尺寸數(shù)據(jù)字段,支持事務(wù)控制。

        以執(zhí)行添加SQL語句的executeInsertSQL方法為例,動態(tài)SQL語句生成組件利用一個List保存XML文檔樹當(dāng)前元素的所有屬性對象,代表要插入數(shù)據(jù)表的一組字段對象,利用另一個List保存各字段在數(shù)據(jù)表中的實際類型值。表字段的實際類型可通過數(shù)據(jù)庫模型組件獲得,數(shù)據(jù)庫模型組件封裝了數(shù)據(jù)庫描述XML文件的所有相關(guān)信息,包括具體字段類型。之后,組件從兩個List中逐一取出數(shù)據(jù),根據(jù)具體字段類型,調(diào)用JDBC底層函數(shù)完成相應(yīng)賦值。在這一過程中,SQL動態(tài)構(gòu)建組件會調(diào)用數(shù)據(jù)庫方言工廠類方法獲取具體數(shù)據(jù)庫方言,針對不同數(shù)據(jù)庫構(gòu)造特定的SQL實現(xiàn)。

        五、結(jié)束語

        本文在分析JavaEE應(yīng)用系統(tǒng)現(xiàn)有數(shù)據(jù)訪問層技術(shù)的基礎(chǔ)上,提出一種基于XML-關(guān)系數(shù)據(jù)映射和轉(zhuǎn)換的數(shù)據(jù)訪問層組件實現(xiàn)方案,實現(xiàn)數(shù)據(jù)訪問和業(yè)務(wù)邏輯相分離,使系統(tǒng)層次清晰,具有較好的靈活性和可擴展性。在此基礎(chǔ)上,通過合肥學(xué)院高校實驗室管理平臺項目闡述了關(guān)鍵技術(shù)和實現(xiàn)方法。該系統(tǒng)在實際運行中性能穩(wěn)定,效果良好。

        [1] 〔美〕理查德·森.POJOS in action(中文版):用輕量級框架開發(fā)企業(yè)應(yīng)用[M].李琳驍,王海龍,譯.北京:電子工業(yè)出版社,2007:95-148.

        [2] 王合闖,盧涵宇.數(shù)據(jù)訪問模型和數(shù)據(jù)訪問層構(gòu)造器的設(shè)計與實現(xiàn)[J].微電子學(xué)與計算機,2011,28(5):1-3.

        [3] 堯怡隴,葉松.基于接口多層架構(gòu)的 WTTVS實時監(jiān)控管理系統(tǒng)設(shè)計[J].計算機應(yīng)用與軟件,2014,31(6):29-31.

        [4] 徐世友,袁兆山.Java EE數(shù)據(jù)持久層解決方案的設(shè)計與實現(xiàn)[J].合肥工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2009,32(1):47-50.

        [5] 洪欣.XML模式到關(guān)系模式的遞歸結(jié)構(gòu)映射算法[J].蘭州理工大學(xué)學(xué)報,2012,38(1):94-97.

        [6] 成炳花,劉金廣.在B/S網(wǎng)絡(luò)系統(tǒng)中應(yīng)用 XML技術(shù)的研究[J].武漢理工大學(xué)學(xué)報,2010,32(22):209-212.

        猜你喜歡
        實驗室數(shù)據(jù)庫信息
        電競實驗室
        電子競技(2019年22期)2019-03-07 05:17:26
        電競實驗室
        電子競技(2019年21期)2019-02-24 06:55:52
        電競實驗室
        電子競技(2019年20期)2019-02-24 06:55:35
        電競實驗室
        電子競技(2019年19期)2019-01-16 05:36:09
        訂閱信息
        中華手工(2017年2期)2017-06-06 23:00:31
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        展會信息
        中外會展(2014年4期)2014-11-27 07:46:46
        青青青爽在线视频免费播放| 日韩免费一区二区三区在线| 男人阁久久| 国产精品一区二区三区成人| 亚洲av网一区二区三区| 日韩精品无码中文字幕电影| 天天天综合网| 中文字幕人成乱码中文乱码| 日本成年一区久久综合| 亚洲乱码一区av春药高潮| 三年片在线观看免费大全电影| 91日本在线精品高清观看| 亚洲人成精品久久熟女| 少妇久久久久久人妻无码| 日韩精品中文字幕无码一区| 国产亚洲精品不卡在线| 视频一区视频二区自拍偷拍| 精品国产乱码久久久久久婷婷 | 国产一区二区三区视频大全| 日本一区二区三区视频免费在线 | 丰满熟妇人妻无码区| av中文字幕在线直播| 精品一区二区三区免费视频| 国产美女在线精品免费观看网址| 青青草99久久精品国产综合| 久久久精品国产免费看| 国产三级久久久精品麻豆三级| 天天综合天天爱天天做| 无码国产精品一区二区免费模式| 亚洲中文欧美日韩在线人| 热综合一本伊人久久精品| 麻豆国产精品久久人妻| 性大片免费视频观看| 亚洲精品99久久久久久| 青青草手机在线观看视频在线观看| 亚洲成av人影院| 亚洲天堂中文| 国产主播一区二区三区在线观看| av无码电影一区二区三区| 老太脱裤让老头玩ⅹxxxx| 青青草久热手机在线视频观看 |