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

基于DAO模式的Hibernate框架在Java Web開發中的應用*

2015-06-26 15:58:22王正玉李斌
網絡安全與數據管理 2015年11期
關鍵詞:數據庫用戶系統

王正玉,李斌

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

基于DAO模式的Hibernate框架在Java Web開發中的應用*

王正玉,李斌

(安徽廣播電視大學遠程教育技術與圖文信息中心圖書館,安徽合肥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所示。

圖1Hibernate持久化結構

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

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

1.3 Hibernate的核心接口

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

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

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

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

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

(5)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)

);

(2)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)

);

(4)訂購表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)

);

(5)評價表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)應用的開發。

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

表1 Web系統數據層設計中表與持久化類對應關系

2 DAO模式的介紹

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

圖2 DAO模式結構

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所示。

圖3 網上書店系統主界面

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

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

圖4 查詢結果

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

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

圖5 用戶注冊

圖6 添加用戶

圖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]ALLAMARAJUS.ProfessionalJavaserverprogramming J2EE l.3[M].Birmingham:Wrox Press,2001.

Application of the DAO pattern based Hibernate framework in Java Web development

Wang Zhengyu,Li Bing
(Distance Education Technology and Information Center and Library,Anhui Radio and TV University,Hefei 230022,China)

Hibernate is one of the most popular object-relational mapping framework in Java field.It makes programmers focus more on the design of the business logic instead of coding complex SQL statements.Data Access Object can separate the specific business logic from the data persistence by its abstraction,to realize a loose coupling structure between system and specific data source.Even if the DAO implementation code changes,it will not affect the business layer calls.Through the case,this article makes an introduction of this technology with DAO pattern.

Hibernate;DAO pattern;data persistence;framework

TP311

A

1674-7720(2015)11-0014-04

2015-01-09)

王正玉(1985-),男,碩士,助理工程師,主要研究方向:數字圖像處理。

安徽省教育廳自然科學基金項目(KJ2014A081)

猜你喜歡
數據庫用戶系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數據庫
財經(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數據庫
財經(2016年15期)2016-06-03 07:38:02
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 欧美劲爆第一页| www.国产福利| 国内精品伊人久久久久7777人| 欧美成人怡春院在线激情| 久久中文字幕2021精品| 国产成人精品一区二区不卡| 扒开粉嫩的小缝隙喷白浆视频| 国产不卡国语在线| 性做久久久久久久免费看| 在线免费看片a| 欧美一级在线| 国产成人一区二区| 黄色网站在线观看无码| 波多野结衣一区二区三区四区视频 | 色网站在线视频| 久久天天躁狠狠躁夜夜躁| 欧美三级不卡在线观看视频| 免费看一级毛片波多结衣| 97视频在线精品国自产拍| 欧美国产日韩在线| 欧美中文字幕一区| 天堂成人在线| 国产视频一区二区在线观看 | 中美日韩在线网免费毛片视频| 日本在线视频免费| 看国产毛片| 日本五区在线不卡精品| 亚洲日韩欧美在线观看| 国产综合另类小说色区色噜噜| 久久精品电影| 亚洲精品无码抽插日韩| 日韩在线1| 在线免费无码视频| 亚洲国产日韩欧美在线| 日本国产精品一区久久久| 久久综合亚洲鲁鲁九月天| 中国丰满人妻无码束缚啪啪| 国产精品女同一区三区五区| 热99re99首页精品亚洲五月天| 91麻豆国产视频| 国产乱码精品一区二区三区中文 | 欧美a在线看| 欧美视频免费一区二区三区| 国产精品一线天| 久久国产精品电影| 黑人巨大精品欧美一区二区区| 欧美高清日韩| 成年免费在线观看| 国产成人亚洲欧美激情| 99国产精品国产| 97视频在线精品国自产拍| 国产原创第一页在线观看| 成人va亚洲va欧美天堂| 久久国产V一级毛多内射| 热热久久狠狠偷偷色男同| 国产色婷婷| 日韩欧美色综合| 国产男人天堂| 国产69精品久久久久孕妇大杂乱| 在线播放91| 成人免费一区二区三区| 欧美人在线一区二区三区| 亚洲成年人片| 亚洲无码久久久久| 欧美成人日韩| 国产白浆一区二区三区视频在线| 又爽又大又黄a级毛片在线视频| 亚洲视频免费在线看| 欧美全免费aaaaaa特黄在线| 国产成人亚洲无码淙合青草| 欧美在线国产| 亚洲全网成人资源在线观看| 2020久久国产综合精品swag| 国产网站黄| 日韩精品资源| 一级毛片免费的| 婷婷六月色| 亚洲开心婷婷中文字幕| 亚洲欧美成人影院| h网址在线观看| 久久婷婷人人澡人人爱91| 亚洲国产综合第一精品小说|