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

        ?

        一種簡捷的數(shù)據(jù)持久層解決方案

        2016-04-12 00:00:00梁弼
        現(xiàn)代電子技術 2016年14期

        摘 要: 針對目前使用Hibernate技術來實現(xiàn)數(shù)據(jù)持久層存在繁瑣的映射文件配置、不靈活的數(shù)據(jù)訪問等問題,提出一種基于Spring JDBC來實現(xiàn)數(shù)據(jù)持久層的方案,并結合實際應用系統(tǒng)的開發(fā),詳細論述了其具體實施過程。實際開發(fā)證明,該方案是切實可行的,它不僅避免了映射文件配置,而且能簡單快捷、靈活高效地完成數(shù)據(jù)持久層任務,并能與上下層次有機融合,較好地滿足了多層Web應用系統(tǒng)的需求。

        關鍵詞: 數(shù)據(jù)持久層; Spring JDBC; Hibernate技術; 映射文件配置; 多層Web

        中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2016)14?0084?03

        A simple solution for data persistence layer

        LIANG Bi

        (College of Computer, Sichuan University of Arts and Science, Dazhou 635000, China)

        Abstract: In view of the problems existing in the data persistence layer that is implemented by Hibernate technology, such as cumbersome configuration of mapping file and inflexible data access, a simple solution based on Spring JDBC to realize data persistence layer is proposed in this paper. The process of its implementation is discussed in detail by combining with the development of practical application system. The actual development proves that the solution is feasible. It can avoid the configuration of mapping file, and it is also simple, fast, flexible and efficient to complete data persistence layer tasks. In addition, it can integrate with upper layer and lower layer, and can better meet the need of multi?layer Web application system.

        Keywords: data persistence layer; Spring JDBC; Hibernate technology; mapping file configuration; multi?layer Web

        0 引 言

        數(shù)據(jù)持久層是經典Web應用程序三層架構中非常重要的一層,它用來解決面向對象應用程序向關系數(shù)據(jù)庫存儲數(shù)據(jù)時數(shù)據(jù)類型不一致的問題,即ORIM (Object Relation Impedance Mismatch)問題[1]。其基本的解決方法是使用ORM(Object Relation Mapping)思想,該思想注重利用元數(shù)據(jù)將數(shù)據(jù)在對象與關系之間來回映射,從而確保數(shù)據(jù)訪問代碼不直接侵入域對象類。目前已經有許多ORM 框架技術,如iBATIS,Hibernate及JPA等,并且Hibernate以其輕量級、純粹的面向對象編程理念等優(yōu)勢成為目前主流的持久化實現(xiàn)工具[2]。

        然而,由于Hibernate對JDBC封裝得過于完整,導致開發(fā)人員無法靈活使用JDBC的原生SQL,所以其沒有JDBC直接訪問關系數(shù)據(jù)庫效率高;同時Hibernate遵循ORM原則,導致映射文件配置過于復雜,當遇到大型項目時映射文件和面向對象代碼是非常龐大且繁瑣,這直接影響到Web系統(tǒng)的性能及維護;而且Hibernate處理批量數(shù)據(jù)時較弱,對于批量數(shù)據(jù)的修改和刪除不適合用Hibernate來完成。針對Hibernate這些缺陷,本文提出了一種基于Spring JDBC的數(shù)據(jù)持久層解決方案,并將其應用于可移動文物管理系統(tǒng)持久層部分。

        1 Spring JDBC

        Spring是目前流行的輕量級一站式企業(yè)應用程序解決方案,它以一種統(tǒng)一的方式對持久化數(shù)據(jù)訪問提供支持,并將數(shù)據(jù)持久化中固定格式的代碼封裝為Spring JDBC,因而Spring JDBC本身就是對JDBC輕量封裝,它由Core,Datasource,Object和Support四個不同包組成,其中最重要的是Core包,它提供了核心功能的類,并且JdbcTemplate是該Core包中最重要的類[3]。

        JdbcTemplate類通過提供相應的模板和輔助類來完成對數(shù)據(jù)的CRUD操作,進而解決了傳統(tǒng)JDBC對數(shù)據(jù)庫的繁瑣操作以及代碼重復的問題;它替開發(fā)人員完成了資源的創(chuàng)建以及釋放工作,從而簡化了對JDBC的使用;它還可以幫助開發(fā)人員避免一些常見的錯誤,比如忘記關閉數(shù)據(jù)庫連接等;而且JdbcTemplate將完成JDBC核心處理流程,比如SQL語句的創(chuàng)建、執(zhí)行,而把SQL語句的生成以及查詢結果的提取工作留給開發(fā)人員的應用代碼[4]。它還可以完成SQL查詢、更新以及調用存儲過程,可以對ResultSet進行遍歷并加以提取等。并且,得益于Spring良好的隔離設計,JDBC封裝類庫可以脫離Spring Context獨立使用[5],其架構如圖1所示。

        2 簡捷的數(shù)據(jù)持久層方案研究

        2.1 數(shù)據(jù)持久層方案設計

        源于傳統(tǒng)的Web應用程序三層架構,將數(shù)據(jù)持久層從業(yè)務邏輯層分離出來,使其處于業(yè)務邏輯層和關系數(shù)據(jù)庫層之間,這樣持久層相當于“橋梁”角色,然后采用Spring JDBC來實現(xiàn),其具體方案設計[6]如圖2所示。

        由圖2可見,由于業(yè)務邏輯層的Java應用程序必須通過JDBC來訪問關系數(shù)據(jù)庫中的數(shù)據(jù),因此持久層本質上實現(xiàn)了對傳統(tǒng)JDBC API的封裝,同時它還實現(xiàn)了數(shù)據(jù)類型由Java面向對象類型向標準的SQL類型的轉換,進而實現(xiàn)了高質量的對象關系轉換工作,從而有效解決了對象關系阻抗失配問題。而這些任務當前由Spring JDBC來完成。它通過借助JdbcTemplate模板類使開發(fā)人員能夠更加專注于數(shù)據(jù)訪問的具體邏輯,而不會再關注數(shù)據(jù)資源管理及異常處理等,這不僅簡化了JDBC的使用,且在一定程度上減少了錯誤的發(fā)生,同時也使數(shù)據(jù)持久化操作變得更加簡捷靈活。

        2.2 數(shù)據(jù)持久方案實現(xiàn)

        本數(shù)據(jù)持久層是基于Spring JDBC來實現(xiàn)的,因此需要創(chuàng)建VO值對象及DAO接口,并通過DAO來持久化VO。其中,VO專門用來封裝持久層對象的數(shù)據(jù),它通過POJO類來具體實現(xiàn);DAO則用來抽象和封裝對關系數(shù)據(jù)庫中數(shù)據(jù)的訪問操作,并形成統(tǒng)一接口對外提供服務,同時隱藏操作關系數(shù)據(jù)庫的實現(xiàn)細節(jié),進而有效實現(xiàn)業(yè)務邏輯層與數(shù)據(jù)庫層的松耦合[7]。DAO本身管理著與關系數(shù)據(jù)庫的連接,內部封裝了JDBC數(shù)據(jù)操作、事務處理等API。Spring框架為JDBC的DAO提供了JdbcDaoSupport支持類,使用該類能夠更加簡化JDBC操作,因為在JdbcDaoSupport中已經提供了JdbcTemplate的變量,只要自定義類繼承JdbcDaoSupport就可以直接調用JdbcTemplate相關的方法來實現(xiàn)數(shù)據(jù)的持久化[8]。

        在實際開發(fā)中,首先需要定義DAO接口,該接口對外提供CRUD操作方法;然后定義DAOImpl實現(xiàn)類,該類需要實現(xiàn)DAO接口并繼承JdbcDaoSupport,通過調用JdbcTemplate相關的方法(如update,mapRow等)來完成對關系數(shù)據(jù)庫中數(shù)據(jù)的具體操作任務[9]。業(yè)務邏輯層只需調用DAO接口中對外提供的方法,而不需要關心DAO的具體實現(xiàn)細節(jié),這樣有利于Web應用程序在不同的持久層技術之間切換,進而增強了系統(tǒng)開發(fā)的靈活性和有效性。ApplicationContext.xml配置文件中除了統(tǒng)一配置數(shù)據(jù)源及事務之外,還需要配置業(yè)務邏輯Bean,數(shù)據(jù)持久DAOImpl,并通過DI為DAOImpl注入Factory,為業(yè)務邏輯Bean注入DAOImpl,這樣有機地完成Web應用程序中各Bean組件的組裝和集成。

        3 簡捷的數(shù)據(jù)持久層方案應用

        文物是人類在歷史發(fā)展過程中遺留下來的遺物、遺跡,它是人類寶貴的歷史文化遺產[10]。隨著新文物的出土和發(fā)現(xiàn),以及新技術的引進,傳統(tǒng)的文物管理方式已無法滿足當今文物管理的需要,開發(fā)一個響應速度快、拓展性強和維護性好的可移動文物管理系統(tǒng)非常必要,通過它來管理已經向外公開的可移動文物,讓更多的人對它們有所了解和認識,進而推進文物的普及工作。為了快捷實現(xiàn)該系統(tǒng)的數(shù)據(jù)訪問,增強用戶體驗,將所提出的數(shù)據(jù)持久層方案應用到本系統(tǒng)的持久層部分,具體實施過程如下:

        3.1 環(huán)境搭建

        環(huán)境搭建是具體使用某種框架技術最重要的一步,在此過程中根據(jù)不同框架技術所完成的具體工作不一樣,但一般都有導入相關的Jar包,創(chuàng)建和配置相關文件,并進行框架的初始化等工作。由于Spring JDBC使用相對簡單,因此在可移動文物管理系統(tǒng)持久層部分的環(huán)境搭建中,只需進行相關Jar包的導入即可,如導入spring.jar,commons?logging,commons?dbcp.jar,commons?pool.jar,commons?annotation.jar和jtds?1.2.jar等。

        3.2 配置ApplicationContex.xml

        ApplicationContex.xml文件是整個可移動文物管理系統(tǒng)的基礎,它所起的作用至關重要,其能將本系統(tǒng)的持久層、業(yè)務邏輯層及其他各層有機的融合在一起,并實現(xiàn)對系統(tǒng)中所有Bean的有效管理。ApplicationContex.xml在本系統(tǒng)持久層部分主要完成數(shù)據(jù)源配置、事務配置及其他一些初始工作,用于保證Spring JDBC正常完成該系統(tǒng)VO的持久化任務,其關鍵配置如下:

        3.3 創(chuàng)建VO值對象

        一個VO通過一個簡單的Java對象即POJO來實現(xiàn),一般情況下,一個POJO就表征了與數(shù)據(jù)表里某條記錄相對應的實體,它由實體的一些屬性及屬性的訪問方法組成,其中除了無意義的主屬性只能被獲取外,每一個屬性都對應著兩個外部對象訪問的方法,即get()和set()。本可移動文物管理系統(tǒng)相關的POJO有User.java,Admin.java,CulturalRelic.java,Picture.java,Video.java,Msg.java和News.java等,其中3.4 創(chuàng)建DAO接口及實現(xiàn)類

        根據(jù)本文所提出的數(shù)據(jù)持久層方案,使用DAO設計模式來完成可移動文物管理系統(tǒng)持久層任務。DAO模式的實現(xiàn)包括DAO接口和DAOImpl實現(xiàn)類。其中,DAO接口負責聲明訪問特定POJO所對應的抽象業(yè)務邏輯方法,DAOImpl實現(xiàn)類則負責使用Spring JDBC封裝的JdbcTemplate來具體實現(xiàn)DAO接口中聲明的抽象方法,這樣可以減少組件間的耦合度。在本系統(tǒng)中,創(chuàng)建的DAO接口有UserDAO.java,AdminDAO.java,CulturalRelicDAO.java,PictureDAO.java,VideoDAO.java,MsgDAO.java和NewsDAO.java等,然后通過調用JdbcTemplate提供的方法對這些DAO接口進行實現(xiàn)。其中CulturalRelicDAO的實現(xiàn)類CulturalRelicDAOImpl里刪除可移動文物的方法核心代碼如下:

        4 結 語

        本文使用Spring JDBC來設計和實現(xiàn)了Web應用程序中的數(shù)據(jù)持久層,并將其應用于可移動文物管理系統(tǒng)持久層部分,解決了目前主流的Hibernate在完成持久層任務時所遇到的一些問題。通過實際應用開發(fā)證明,該持久層方案是正確可行的,且具有如下三方面特征:

        (1) Spring JDBC通過借助JdbcTemplate可以執(zhí)行對關系數(shù)據(jù)的CRUD操作,不僅代碼簡單、容易編寫,而且相對于Hibernate對JDBC全封裝模式更為靈活。

        (2) Spring JDBC繼續(xù)了以前JDBC的SQL訪問方式,不需要在HQL和SQL之間相互轉換,可以直接操作關系數(shù)據(jù)庫,進而提高了數(shù)據(jù)訪問速度,增強了用戶體驗。

        (3) 該方案沒有*.hbm.xml映射文件繁瑣配置,避免了運行時產生大量的冗余數(shù)據(jù)存放于內存,進而提高了系統(tǒng)性能以及系統(tǒng)的開發(fā)效率??偟膩碇v,基于Hibernate技術實現(xiàn)Web應用程序中的數(shù)據(jù)持久層已出現(xiàn)較多問題,而通過Spring JDBC來完成數(shù)據(jù)持久層任務,具有簡單、快捷、靈活及高效等特性,因此值得進一步推廣使用。

        參考文獻

        [1] 閆宏印,張衛(wèi)爭,劉超慧.開源框架下Web應用分層的設計與實現(xiàn)[J].計算機工程與設計,2008,29(23):6023?6025.

        [2] 夏斌,李志蜀.基于Hibernate框架的數(shù)據(jù)持久層的研究及應用[J].計算機應用,2008(9):2446?2448.

        [3] Spring Reference Documentation. Introduction to the Spring framework [R]. [S.l.]: Spring Reference Documentation, 2015.

        [4] Spring JDBC Reference Documentation. Introduction to the Spring JDBC [EB/OL]. [2013?12?24]. http://docs.spring.io/spring?data/jdbc/docs.

        [5] 張俐,張維璽.基于Spring和JDBC的蔬菜運銷管理系統(tǒng)在數(shù)據(jù)持久層的應用[J].安徽農業(yè)科學,2012(7):4401?4403.

        [6] 張少應,程傳旭.基于Hibernate持久化層的設計與實現(xiàn)[J].計算機技術與發(fā)展,2014(12):101?104.

        [7] 劉德山,楊彬彬.基于Hibernate框架的數(shù)據(jù)持久層架構設計及應用[J].微型機與應用,2011,30(15):12?14.

        [8] 高劍,朱程榮.Spring框架在數(shù)據(jù)持久層的應用研究[J].微機發(fā)展,2005,15(11):106?108.

        [9] 張俐.基于JavaEE的電信CRM數(shù)據(jù)持久層的實現(xiàn)[J].計算機工程,2009,35(6):41?43.

        [10] 梁弼,劉篤晉,肖麗利.基于五層架構的不可移動文物數(shù)字化平臺構建研究[J].計算技術與自動化,2014,33(4):115?118.

        日韩人妻一区二区中文字幕| 男女啪啪免费体验区| 精品欧美乱码久久久久久1区2区| 99re国产电影精品| 日本人妖一区二区三区| 99久久国产精品免费热| 亚洲国产精品综合久久网络| 日韩一卡2卡3卡4卡新区亚洲| 一级片麻豆| 一区二区高清视频在线观看| 一区二区高清免费日本| 美女张开腿黄网站免费| 亚洲人成电影在线观看天堂色| 亚洲aⅴ无码国精品中文字慕| 亚洲一级av大片在线观看| 美女露出奶头扒开内裤的视频| 国产精品人人做人人爽人人添| 无码中文字幕日韩专区视频| 日韩中文字幕一区二区高清| av天堂手机一区在线| 人妻少妇中文字幕久久| 熟女少妇内射日韩亚洲| 国产a三级久久精品| 亚洲精品无人区一区二区三区| 91精品国产九色综合久久香蕉 | 人妖熟女少妇人妖少妇| 国产精品亚洲一二三区| 十八禁无遮挡99精品国产| 国产99久久精品一区二区| 欧美日韩a级a| 中文字幕人妻被公喝醉在线| 新婚少妇无套内谢国语播放| 国产高清在线精品一区| 亚洲一区区| 亚洲免费精品一区二区| 又黄又爽又色视频| 无码人妻精品一区二区三区下载| 亚洲无码视频一区:| 亚洲成在人线天堂网站| 亚洲熟妇无码av在线播放| 精品国产一区二区三区av 性色|