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

一種簡捷的數據持久層解決方案

2016-04-12 00:00:00梁弼
現代電子技術 2016年14期

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

關鍵詞: 數據持久層; 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 引 言

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

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

1 Spring JDBC

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

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

2 簡捷的數據持久層方案研究

2.1 數據持久層方案設計

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

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

2.2 數據持久方案實現

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

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

3 簡捷的數據持久層方案應用

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

3.1 環境搭建

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

3.2 配置ApplicationContex.xml

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

3.3 創建VO值對象

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

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

4 結 語

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

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

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

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

參考文獻

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

[2] 夏斌,李志蜀.基于Hibernate框架的數據持久層的研究及應用[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的蔬菜運銷管理系統在數據持久層的應用[J].安徽農業科學,2012(7):4401?4403.

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

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

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

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

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

主站蜘蛛池模板: 国产综合精品一区二区| 欧美精品xx| 18禁色诱爆乳网站| 精品国产一区二区三区在线观看| 欧美精品成人一区二区视频一| 欧美中文字幕无线码视频| 国产福利一区视频| 一级毛片基地| 日韩精品亚洲人旧成在线| AV不卡国产在线观看| 亚洲最大在线观看| 亚洲a级在线观看| 国产成人精品在线1区| 午夜丁香婷婷| 人禽伦免费交视频网页播放| 99久久国产综合精品女同| 天堂网亚洲系列亚洲系列| 国产成人精品午夜视频'| 国产高清免费午夜在线视频| 51国产偷自视频区视频手机观看 | 免费网站成人亚洲| 香蕉视频在线精品| 超级碰免费视频91| 成人在线欧美| 国产精品美人久久久久久AV| 国产精品入口麻豆| 欧美一级高清视频在线播放| 美女免费黄网站| 天天躁夜夜躁狠狠躁图片| h网址在线观看| 91系列在线观看| 在线不卡免费视频| 青青草原国产免费av观看| 国产成人调教在线视频| 又黄又湿又爽的视频| 久久这里只有精品66| 国产精品视频第一专区| 在线看片中文字幕| 国产地址二永久伊甸园| 久久99精品久久久久纯品| 亚洲视频无码| 狠狠v日韩v欧美v| 99国产在线视频| 高清色本在线www| 欧美天天干| 日韩成人在线网站| 欧美97色| 手机精品福利在线观看| 久久国产精品影院| 久久成人国产精品免费软件| 亚洲v日韩v欧美在线观看| 自慰高潮喷白浆在线观看| 国产超薄肉色丝袜网站| 亚洲第一在线播放| 欧美性爱精品一区二区三区 | 久热99这里只有精品视频6| 热99精品视频| 久草性视频| 丁香六月激情综合| 大陆国产精品视频| 欧美一级高清视频在线播放| 亚洲日本一本dvd高清| 欧美亚洲国产一区| 久久综合成人| 凹凸精品免费精品视频| 国产视频一区二区在线观看| 在线综合亚洲欧美网站| 欧美日韩国产综合视频在线观看 | 99热这里只有精品免费| 国产一区二区精品福利| 亚洲综合久久一本伊一区| 国产精品成人第一区| 重口调教一区二区视频| 91口爆吞精国产对白第三集| 日韩性网站| 白浆视频在线观看| 91蜜芽尤物福利在线观看| 国产鲁鲁视频在线观看| 亚洲第一色网站| 九九热在线视频| 久久公开视频| 亚洲国产成人精品无码区性色|