《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于DAO模式的Hibernate框架 在Java Web開發中的應用
基于DAO模式的Hibernate框架 在Java Web開發中的應用
2015年微型機與應用第11期
王正玉,李 斌
(安徽廣播電視大學 遠程教育技術與圖文信息中心 圖書館,安徽 合肥 230022)
摘要: Hibernate是目前Java領域中最受歡迎的OR映射開源框架,它的出現使程序員得以擺脫編寫繁瑣SQL語句的麻煩,將更多的精力用于業務邏輯的設計。DAO即數據訪問對象,其目的是實現一種用來操作數據源的訪問機制。通過DAO層的抽象,將具體的業務邏輯層和數據持久層區分開來,實現了系統與特定數據源的松耦合,即使改變DAO實現代碼也不會影響業務層的調用。通過案例,對基于DAO模式的Hibernate框架技術進行了介紹。
Abstract:
Key words :

王正玉,李 斌

(安徽廣播電視大學 遠程教育技術與圖文信息中心 圖書館,安徽 合肥 230022)

  摘  要Hibernate是目前Java領域中最受歡迎的OR映射開源框架,它的出現使程序員得以擺脫編寫繁瑣SQL語句的麻煩,將更多的精力用于業務邏輯的設計。DAO即數據訪問對象,其目的是實現一種用來操作數據源的訪問機制。通過DAO層的抽象,將具體的業務邏輯層和數據持久層區分開來,實現了系統與特定數據源的松耦合,即使改變DAO實現代碼也不會影響業務層的調用。通過案例,對基于DAO模式的Hibernate框架技術進行了介紹。

  關鍵詞: Hibernate;DAO模式;數據持久;框架

0 引言

  OR Mapping對象關系映射技術在Java領域中已經取得廣泛的應用。Hibernate則是該領域中最受歡迎的OR映射開源框架,Hibernate技術使程序員得以擺脫編寫繁瑣SQL語句的麻煩,使其將更多精力應用于業務邏輯的設計。

  DAO(Data Access Object)即數據訪問對象,主要為了實現一種用來操作數據源的訪問機制。數據源可以是RDBMS關系數據庫、LDAP目錄服務器、XML文件等。依賴于DAO的業務組件為其客戶端使用DAO提供更簡單的接口[1]。

  本文采用一種基于DAO的Hibernate的設計模式來實現在J2EE開發[2]的數據層表示,數據庫為Oracle 10g數據庫。并通過編寫例程的方式詳細介紹Hibernate和DAO的原理、技術及開發步驟等。

1 Hibernate原理及應用

  1.1 Hibernate技術的原理

  Hibernate是個獨立的對象關系映射系統(ORM)的持久化框架,它本身不依賴于Web服務器(如Tomcat)或應用服務器(如JBoss)的支持。Hibernate實質上是一種對象關系映射工具,即它的原理就是ORM[3]。

  ORM是一種為了解決面向對象與關系數據庫存在的互不匹配問題而出現的一種技術。簡單地說,ORM是通過使用描述對象和數據庫之間映射的元數據,將Java程序中的對象自動持久到關系數據庫中。ORM是隨著面向對象的軟件開發方法的發展而產生的。ORM系統通常以中間件的形式存在,主要實現程序對象到關系數據庫數據的映射。ORM具有實體映射、關系映射、高級查詢、事物處理、實體類和操作類的生成等五大特征。

  1.2 Hibernate的體系結構

  Hibernate主要由持久化對象、配置文件和對象關系映射文件構成。如下圖1所示。

001.jpg

  從圖1中可以看出,應用層抽象出業務的POJO(Plain Ordinary Java Objects)對象并通過Hibernate及映射文件的定義來實現其業務對象的持久化管理。

  Hibernate有兩類[4]重要文件,一類是配置文件(擴展名為.cfg.xml),另一類是映射文件(擴展名為.hbm.xml)。映射文件的主要作用是告訴Hibernate如何把POJO對象持久到數據庫中。配置文件的作用是對Hibernate環境進行配置,這里包括使用的數據庫或數據源等信息。

  1.3 Hibernate的核心接口

  在Hibernate中,其核心接口主要有以下五個:

 ?。?)Configuration接口。該類抽象了負責加載Hibernate的配置及映射信息,一個Configuration對象實例代表一個應用程序中Java類型到SQL數據庫映射的完整集合,Configuration被用來構建一個SessionFactory,映射定義則由不同的XML映射定義文件編譯而來。

 ?。?)SessionFactory接口。其為一個Java接口,它是針對單個數據庫映射關系經過編譯得到的內存鏡像。單個項目通常只需一個SessionFactory,當該項目需操作多個數據庫時,必須為每個數據庫指定一個SessionFactory。

  (3)Session接口。該接口對于開發人員來說很重要,表示應用程序與數據持久層之間交互操作的一個單線程對象,此對象生存期很短。其隱藏了JDBC連接,同時也是Hibernate事務(Transcation)的工廠。

 ?。?)Transaction接口。Hibernate通過Transaction來聲明事務邊界。Hibernate可以配置為JDBC、JTA或CMT三種事務之一。

 ?。?)Query。在Hibernate中,HQL語言是Hibernate提供的一個非常強大的面向對象的查詢語言,其語言特性與SQL語言非常類似。

  1.4 例程數據庫設計

  在本文設計的網上書店系統中,其數據庫中共有五張表:

  (1)bookinfo表,存儲書籍相關信息。創建該表的Oracle語句如下:

  CREATE TABLE bookinfo(

  id number(10) NOT NULL,//書籍ID

  bookName varchar(128)default′′,//書名

  isbn varchar(64)default ′′,//序列號

  writer varchar(45)NOT NULL,//作者

  publisher varchar(64)default′′,//出版社

  intro varchar2(150),//簡介

  price decimal(5,2)default 0.00,//價格

  remaining number(5)default 0,//庫存量

  picture varchar(32),//書籍封面

  date1 date NOT NULL,//日期

  PRIMARY KEY(id)

 ?。?;

 ?。?)rebate表,存放書籍相關折扣信息。創建該表的Oracle語句如下:

  CREATE TABLE remark(

  id number(10)NOT NULL,//序列號

  bookid number(10)NOT NULL,//客戶等級

  userid number(10)NOT NULL,//折扣率

  grade number(3)NOT NULL,

  remark varchar2(50)NOT NULL,

  date1 date NOT NULL,

  PRIMARY KEY(id)

 ?。?;

  (3)用戶表userinfo,存放用戶相關信息。創建該表的Oracle語句如下:

  CREATE TABLE userinfo(

  id number(10),//用戶ID

  username varchar(15)NOT NULL,//用戶名

  pwd varchar(32)NOT NULL,//用戶密碼

  email varchar(32)NOT NULL,//用戶郵箱

  address varchar(100)default NULL,//通訊地址

  postcode varchar(6)default NULL,//郵編

  level1 decimal(10,2),//用戶等級

  power number(3)NOT NULL,//充值信息

  PRIMARY KEY(id)

 ?。?;

 ?。?)訂購表order1,存放當前已交易的訂單信息。創建該表的Oracle語句如下:

  CREATE TABLE order1(

  id number(10) NOT NULL,//訂單ID

  bookid number(10)NOT NULL,//書籍ID

  userid number(10)NOT NULL,//用戶ID

  number1 number(3)NOT NULL,//銷量

  address varchar2(128)NOT NULL,//通訊地址

  postcode varchar2(6)NOT NULL,//郵編

  orderdate date NOT NULL,//訂購日期

  status number(3)NOT NULL,//當前發貨狀態

  PRIMARY KEY(id)

 ?。?/p>

 ?。?)評價表remark存放書籍的相關評價信息。創建該表的Oracle語句如下:

  CREATE TABLE remark(

  id number(10)NOT NULL,//評價信息ID

  bookid number(10)NOT NULL,//書籍ID

  userid number(10)NOT NULL,//用戶ID

  grade number(3)NOT NULL,//評價等級

  remark varchar2(50)NOT NULL,//評價內容

  date1 date NOT NULL,//評價日期

  PRIMARY KEY(id)

 ?。?;

  1.5 Hibernate技術的開發步驟及應用

  Hibernate的開發步驟大體分為三步:(1)持久化類的設計。所謂的持久化類是指POJO類。(2)持久化類和關系數據庫的映射。(3)應用的開發。

006.jpg

  本文按照Hibernate的開發步驟設計了網上書店系統的數據層。將數據庫中表與持久化類一一對應,對應關系如表1所示。在對應類中,設置對應表的相應字段的變量及獲取,設置該字段值的方法。接著在各自持久化類對應的.hbm.xml映射文件中,設置了各自類與其對應的表的映射環境參數。最后再在基于DAO模式的技術中進行相關應用開發。

2 DAO模式的介紹

  數據訪問對象模型(Data Access Object)負責溝通數據庫,處于業務邏輯層與數據源之間,是一種抽象數據源,其目的是為了提供業務邏輯對數據的透明訪問。具體模式結構如圖2所示。

002.jpg

  DAO模式揭示了應用系統與數據源之間的關系。可以看到,應用系統可以包含一個或多個數據訪問對象,并且數據訪問對象可以訪問不同的數據源。對于Web應用而言,數據訪問對象隔離了不同數據源之間的差異,從而實現了業務邏輯層與數據源之間的解耦。

  DAO模式是標準的J2EE設計模式[5]之一。典型的DAO由以下幾個組件構成:(1)DAO數據訪問接口,作為外界訪問數據對象的統一接口;(2)DAO接口的實現類,負責DAO接口對不同數據源的實現;(3)傳遞與DAO層的數據訪問對象(域對象或值對象),保存的是業務狀態數據;(4)DAO工廠類,負責創建不同業務領域的DAO對象。

3 基于DAO模式的Hibernate設計及應用

  在基于DAO模式的Hibernate設計中,數據訪問都是通過DAO層封裝實現的。每個DAO實例都是為一個域對象服務;每一個獨立的域對象都有相應的DAO實現;DAO的職責是對域對象進行CRUD(即Create、Read、Update、Delete)操作;DAO允許通過簡單的查找方法來返回一組域對象。在DAO對象中,包含了對POJO類進行的操作。在DAO對象中調用了Hibernate的Configuraton、Session、Transaction、SessionFactory、Query等核心接口。本文例程中,DAO接口有四類,分別為UserDao類、IorderDao類、IBookDao類和IBaseDao類。上述接口類分別對應著各自的接口實現類,分別為UserDaoImpl子類、IorderDaoImpl子類、IBookDaoImpl子類、IBaseDaoImpl子類。

4 網上書店數據層結果展示

  通過這種基于DAO模式的Hibernate設計方法,完成了網上書店系統的數據層設計工作。系統運行的主界面如圖3所示。

003.jpg

  網上書店系統可以實現與數據庫的連接和相應的操作?,F通過向用戶表中添加一個用戶數據舉例如下。

  假定要添加一個名為“香成”的用戶信息,首先在Oracle數據庫中查看userinfo表中有無這個用戶。結果如下圖4所示。

004.jpg

  接著,在網上書店系統中注冊一個用戶“香成”,然后在Oracle數據庫中查看是否已經添加該用戶,具體如圖5、圖6所示。

005.jpg

  最后,用該用戶登錄網站,并成功登錄。如圖7所示。

  上述試驗結果表明,通過基于DAO模式的Hibernate設計方法很好地完成了該Web系統的數據層設計。

5 總結

  基于DAO的設計通常對業務邏輯層提供一個通用的接口調用,同時其內部實現了一個特定的持久策略,例如采用Hibernate進行持久化操作。通過DAO層的抽象,將具體的業務邏輯層和數據持久層區分開來,實現了系統與特定數據源的松耦合。從而使得在改變DAO實現代碼時不會影響業務層的調用,優化了數據訪問,增強系統的可擴展性和維護性。

參考文獻

  [1] 陶俑,李曉軍.Hibernate ORM最佳實踐[M].北京:清華大學出版社,2007.

  [2] BERRY C A, JOHNCARNELL. J2EE Design Patterns Applied[M]. Birmingham: Wrox Press, 2002.

  [3] 陳松.J2EE電子商務系統開發從入門到精通:基于Struts和Hibernate技術實現[M].北京:清華大學出版社,2007.

  [4] 錢忠勝.基于Hibernate的數據持久化研究及其應用[J].微計算機信息,2007,23(24):242-244.

  [5] ALLAMARAJU S. Professional Java server programming J2EE l.3[M]. Birmingham: Wrox Press, 2001.


此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲欧洲精品一区二区精品久久久| 欧美日本韩国| 欧美日韩三级电影在线| 亚洲经典自拍| 亚洲网站视频| 91久久精品一区二区三区| 国产精品美女久久久浪潮软件| 国模精品一区二区三区色天香| 久久天堂av综合合色| 99re6热在线精品视频播放速度| 欧美日韩亚洲国产精品| 亚洲视频在线免费观看| 亚洲一区在线免费| 国产欧美日韩免费| 精品av久久707| 最新国产拍偷乱拍精品| 亚洲精品影院在线观看| 嫩草国产精品入口| 久久精品视频在线| 欧美日韩高清在线观看| 欧美xart系列在线观看| 99国产精品国产精品久久| 亚洲系列中文字幕| 国产精品ⅴa在线观看h| 亚洲精品一二三区| 欧美在线短视频| 136国产福利精品导航网址应用| 亚洲激情自拍| 欧美一区二区在线视频| 欧美在线影院在线视频| 久久免费观看视频| 91久久精品国产| 亚洲视频视频在线| 樱桃视频在线观看一区| 欧美在线观看视频一区二区三区| 亚洲一区二区欧美日韩| 国产精品影音先锋| 亚洲天堂免费观看| 黑人一区二区三区四区五区| 欧美日韩在线不卡一区| 亚洲国产欧洲综合997久久| 在线成人av.com| 一区二区日韩伦理片| 亚洲线精品一区二区三区八戒| 亚洲一区二区三区四区中文| 亚洲欧洲另类| 国产精品视频最多的网站| 亚洲黄色在线| 欧美另类极品videosbest最新版本| 一本色道久久综合亚洲精品按摩| 在线视频你懂得一区二区三区| 亚洲国产精品视频一区| 亚洲国产一区二区三区在线播| 夜夜爽www精品| 美女脱光内衣内裤视频久久影院| 国产精品普通话对白| 久久成人久久爱| 欧美午夜大胆人体| 欧美日韩成人在线播放| 在线精品视频一区二区三四| 国产欧美一级| 欧美日韩在线观看一区二区| 久久视频免费观看| 99视频精品全国免费| 亚洲一区二区视频在线| 国内精品模特av私拍在线观看| 国产精品久线观看视频| 99精品视频一区| 91久久国产综合久久91精品网站| 欧美私人啪啪vps| 亚洲视频网在线直播| 黄色成人在线观看| 欧美激情网友自拍| 亚洲永久字幕| 亚洲国产精品一区| 国产精品久久久久久久久久三级| 国产精品自在欧美一区| 欧美黑人国产人伦爽爽爽| 欧美精品国产| 国产亚洲一区二区三区| 亚洲精品偷拍| 欧美日韩免费在线观看| 亚洲经典视频在线观看| 国产精品久久激情| 黄色一区二区在线观看| 久久中文精品| 久久久蜜桃一区二区人| 亚洲无玛一区| 亚洲人成毛片在线播放| 久久精品国内一区二区三区| 久久精品女人天堂| 一本色道久久99精品综合| 在线视频国内自拍亚洲视频| 国产一区二区三区精品欧美日韩一区二区三区| 尤妮丝一区二区裸体视频| 国产精品视频午夜| 欧美v亚洲v综合ⅴ国产v| 一区二区三区日韩精品| 亚洲乱码国产乱码精品精天堂| 亚洲一区免费看| 国产精品毛片va一区二区三区| 99国产精品私拍| 亚洲视频在线观看一区| 亚洲免费观看高清完整版在线观看| 在线成人小视频| 在线一区亚洲| 亚洲国产日韩欧美在线动漫| 亚洲午夜在线观看视频在线| 欧美激情中文字幕乱码免费| 亚洲激情不卡| 久久成人免费日本黄色| 一区二区三区无毛| 亚洲国产天堂网精品网站| 国产丝袜一区二区三区| 亚洲人成高清| 久久这里有精品视频| 欧美日韩亚洲视频一区| 国产一区二区精品在线观看| 午夜日韩福利| 久久精品免费| 久久精品99久久香蕉国产色戒| 国产精品一区二区久久精品| 亚洲深夜福利视频| 在线视频成人| 国产精品swag| 国内精品久久久久久久97牛牛| 欧美亚洲一区二区在线观看| 中日韩午夜理伦电影免费| 国产精品v日韩精品v欧美精品网站| 欧美激情中文字幕一区二区| 一区二区三区高清视频在线观看| 久久久欧美一区二区| 韩日午夜在线资源一区二区| 国产在线拍揄自揄视频不卡99| 久久精品一区二区国产| 国产一区二区三区网站| 亚洲人成在线影院| 一本大道久久a久久精品综合| 国内一区二区三区在线视频| 91久久线看在观草草青青| 国产精品日本欧美一区二区三区| 欧美一区二区在线免费播放| 99视频精品在线| 久久精品72免费观看| 欧美大胆a视频| 亚洲免费观看高清完整版在线观看| 欧美日韩成人精品| 亚洲视频大全| 米奇777在线欧美播放| 亚洲欧美日韩精品久久久久| 欧美成人精品1314www| 国产一区二区三区视频在线观看| 9l国产精品久久久久麻豆| 午夜免费在线观看精品视频| 久久久久国产精品厨房| 免费成人小视频| 在线欧美不卡| 亚洲欧美成人综合| 欧美国产日韩a欧美在线观看| 欧美一级网站| 亚洲欧美制服另类日韩| 亚洲一区二区三区国产| 亚洲精品少妇网址| 欧美大片第1页| 欧美人成免费网站| 欧美在线视频网站| 午夜久久电影网| 国产精品日韩精品| 亚洲欧美国产精品专区久久| 在线精品视频免费观看| 欧美午夜性色大片在线观看| 亚洲国产日韩一区| 久久亚洲捆绑美女| 国内成人在线| 欧美日韩国产一级片| 精品不卡在线| 久久亚洲影音av资源网| 欧美片在线播放| 欧美巨乳在线观看| 欧美高清视频一区二区| 欧美在线亚洲一区| 亚洲欧美日韩国产综合在线| 欧美成人第一页| 国产精品福利在线观看网址| 蜜乳av另类精品一区二区| 亚洲黄色精品| 亚洲精品少妇| 男同欧美伦乱| 国产欧美日韩另类视频免费观看| 欧美激情亚洲自拍| 亚洲综合日韩中文字幕v在线| 国产日韩欧美在线观看| 激情一区二区| 国产一区二区三区四区五区美女| 久久成人人人人精品欧| 美女脱光内衣内裤视频久久网站| 黄色欧美日韩| 性欧美激情精品| 伊人狠狠色j香婷婷综合| 亚洲精品美女久久久久| 激情欧美日韩一区| 欧美成人午夜77777| 国产精品每日更新在线播放网址| 亚洲高清一区二区三区| 国产拍揄自揄精品视频麻豆| 国产精品国产三级国产aⅴ浪潮| 99精品国产福利在线观看免费| 亚洲人成免费| 欧美大片免费看| 国产日韩av高清| 亚洲视频在线二区| 亚洲电影第三页| 欧美精品一二三| 亚洲网站在线播放| 亚洲免费在线视频一区 二区| 99国产精品99久久久久久粉嫩| 亚洲手机成人高清视频| 亚洲日本成人在线观看| 欧美日韩一区自拍| 另类图片国产| 欧美一区二区私人影院日本| 午夜在线播放视频欧美| 国产日韩成人精品| 国产在线乱码一区二区三区| 激情综合色综合久久| 亚洲人成在线观看| 亚洲欧美日韩精品综合在线观看| 欧美精品aa| 欧美午夜免费电影| 亚洲乱码国产乱码精品精98午夜| 一区二区三区在线视频观看| 久久久久久999| 国产精品久久久久av免费| …久久精品99久久香蕉国产| 国产一区二区三区最好精华液| 在线看无码的免费网站| 精品成人乱色一区二区| 亚洲国产乱码最新视频| 亚洲网站视频福利| 狠狠色狠狠色综合日日五| 国产精品久久久久久久午夜片| 欧美人在线观看| 影音先锋国产精品| 久久亚洲春色中文字幕| 久久久999成人| 亚洲国产欧美在线| 久久福利影视| 久久久99久久精品女同性| 亚洲欧美成人一区二区三区| 欧美中文在线视频| 欧美影院精品一区| 欧美成人免费一级人片100| 久久av一区二区三区| 欧美日韩精品国产| 亚洲欧洲精品一区二区三区波多野1战4| 欧美视频在线视频| 亚洲福利在线视频| 免费观看欧美在线视频的网站| 亚洲免费成人| 亚洲国产婷婷综合在线精品| 国产一区日韩二区欧美三区| 国产精品男女猛烈高潮激情| 欧美精品电影在线| 亚洲一二三区视频在线观看| 久久国产精品色婷婷| **网站欧美大片在线观看| 国产日韩欧美制服另类| 永久域名在线精品| 欧美在线999| 欧美日韩免费观看一区三区| 欧美成在线观看| 国产精品综合网站| 欧美日韩日韩| 一本大道久久精品懂色aⅴ| 国产精品久久久久高潮| 蜜桃av噜噜一区| 欧美视频中文字幕| 亚洲午夜精品久久| 国产精品裸体一区二区三区| 亚洲精品色婷婷福利天堂| 国内精品久久久久影院薰衣草| 亚洲欧美日韩国产中文在线| 亚洲国产成人精品久久久国产成人一区| 欧美高潮视频| 狼人社综合社区| 欧美国产精品久久| 一区二区91| 国产精品视频内| 欧美日韩三级电影在线| 欧美视频中文一区二区三区在线观看| 欧美日本中文| 日韩五码在线| 久久看片网站| 久久嫩草精品久久久久| 欧美涩涩网站| 六十路精品视频| 国产精品电影观看| 在线精品亚洲一区二区| 欧美成人a∨高清免费观看| 欧美日韩三级| 亚洲在线免费| 欧美多人爱爱视频网站| 亚洲一区在线观看免费观看电影高清| 久久精品网址| 国产日韩欧美在线视频观看| 在线观看成人小视频| 女人香蕉久久**毛片精品| 久久精品女人| 国内视频一区| 国产精品入口夜色视频大尺度| 中文一区二区在线观看| 国产亚洲制服色| 亚洲综合色视频| 亚洲欧洲在线免费| 国产欧美日韩另类视频免费观看| 久热国产精品视频| 久久嫩草精品久久久久| 欧美视频导航| 欧美视频第二页| 亚洲激情一区二区三区| 久久久国产亚洲精品| 亚洲韩国一区二区三区| 黄色成人在线免费| 久久久久久91香蕉国产| 国产精品一区二区久久久久| 欧美日韩一区二区三| 欧美三区不卡| 麻豆91精品91久久久的内涵|