(计算机软件与理论专业论文)基于hibernate的数据操作平台的设计与实现.pdf_第1页
(计算机软件与理论专业论文)基于hibernate的数据操作平台的设计与实现.pdf_第2页
(计算机软件与理论专业论文)基于hibernate的数据操作平台的设计与实现.pdf_第3页
(计算机软件与理论专业论文)基于hibernate的数据操作平台的设计与实现.pdf_第4页
(计算机软件与理论专业论文)基于hibernate的数据操作平台的设计与实现.pdf_第5页
已阅读5页,还剩46页未读 继续免费阅读

(计算机软件与理论专业论文)基于hibernate的数据操作平台的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硕士学位论文:基于h i b e r n a t e 的数据操作平台的设计与宴现 摘要 i n t e r n e t 的快速发展,推动了j a v a 语言的产生,促使了基于j 2 e e 体系架 构程序的流行。然而在j 2 e e 平台上进行开发时,由于缺少大量成熟的可复用组 件,使得j a v a 开发的效率低下。 本文对j a v a 开源界最流行的对象关系映射框架( h i b e r n a t e ”2 3 ) 的原理进 行了深入的分析,并利用t l i b e r n a t e 框架设计出一套通用的数据操作平台,在一 定程度上完善和扩充了h i b e r n a t e 的功能,为j 2 e e 平台上软件开发提供了一种 新的可复用组件集合,降低了j 2 e e 平台上开发的难度。 本文工作的重点:对h i b e r n a t e 技术的扩展性研究,包括:自定义持久化 的实现、存储过程a p i 设计和w e b 打印的设计;数据操作平台的模型设计及 a p i 的实现,包括:事务处理、线程处理、s m a r t 连接、h i b e r n a t e 连接、数据 操作a p i 的设计等。本文的创新性工作有以下几方面: _ 利用h i b e r n a t e 对h a s h m a p 进行自定义持久化设计,并针对h a s h m a p 的 操作,设计了一套高效的持久化操作算法。 _ 设计并实现了基于h i b e r n a t e 连接数据库的通用存储过程调用a p i 。 设计并实现了基于h i b e r n a t e 事务处理的w e b 打印功能,设计了一套利 用i r e p o r t 和j s p e r r e p o r t 的报表打印a p i 。 - 针对h i b e r n a t e 对j d b c 的封装,补充设计了一种基于x m l 的s m a r t 连 接方式,扩展了数据操作平台对数据库的连接方式。 - 利用h i b e r n a t e 连接及s m a r t 连接,设计出通用的数据操作平台,支持 多线程处理、事务处理,并封装没计了通用数据操作a p i 。 数据操作平台课题来源于国家8 6 3 计划软件重大专项:基于l i n u x 的业务基 础组件平台的研究与应用。该项目于2 0 0 5 年t 2 月通过国家8 6 3 专家组的科技鉴 定,其成果达国内领先水平。目前,基于数据操作平台的产品已经在政府部门进 行了为期一年的使用,这些产品在稳定性和效率方面都满足实际需要,说明数据 操作平台基本达到设计要求。 关键字:数据操作平台,h i b e r n a t e ,中间件,j 2 e e ,对象关系映射 堡主堂些堡苎! 兰王坚查! 竺坐塑塾塑堡堡! 鱼塑堡生皇壅翌 a b s t r a c t t h ed e v e l o p m e n to fi n t e r a c tp r o m o t e dj a v al a n g u a g e se m e r g e n c e e s p e c i a l l y , t h ec h i n e s e g o v e r n m e n tt h a tt h i n k so f t h es a f e t yo ft h ec o u n t r yt r i e sh a r da n dp o p u l a r i z e st h el i n u xs y s t e m t h ea b o v er e a s o n sm a k et h ep r o g r a m m e r si nj 2 e ep o p u l a r h o w e v e r ,w h e np e o p l em a k ep r o g r a m i nj 2 e e ,t h e y f i n d t h eh a r da n d i n e f f i c i e n c yb e c a u s e t h e l a c k o f l o t so f a n d m a t u r e g r o u p w a r e h i b e r n a t ei st h em o s tp o p u l a ro b j e c tr e l a t i o n a lm a p p i n gf r a m ei nt h ej a v ao p e n i n gs o u r c e n o w t h ep a p e rd e s i g n sau n i v e r s a ld a t a - o p e r a t i o np l a t f o r mb yh i b e r n a t e ,e x t e n d sa n dp r e f e c t s i t sf u n c t i o n ,s u p p l yan e wg r n u p w a r ef o rt h em a k i n gp r o g r a mi nj 2 e ep l a t f o r mt h a tr e d u c e st h e h a r df o rt h em a k i n gp r o g r a mi nj 2 e e t h ea r mo ft h i sp a p e ri n c l u d e st w ow a y s o a ei st h ee x p a n s i b l es e a r c ho ft h eh i b e r n a t e , i n c l u d i n gt h er e a l i t yo fs e r f e dd e f i n eo r m 、t h eu s eo f t h es t o r e dp r o c e d u r ea n dw e bp r i n t i n g ; a n o t h e ri st h ed e s i g no ft h ed a t a - o p e r a t i o np l a t f o r ma n dt h er e a l i t yo fi t sa p if u n c t i o n s , i n c l u d i n gt r a n s a c t i o np r o c e s s i n g 、t h r e a dp r o c e s s i n g 、s m a r tc o n n e c t i n g 、h i b e r n a t ec o n n e c t i n ga n d d a t ao p e r a t i o na p i m u c hc r e a t i v ew o r kh a sb e e nd o n ei nt h e s ea s p e c t s : 一t h a ti st h es e l f - d e f i n e do r md e s i g nf o rh a s h m a pb yt h ew a yo f h i b e r n a t e su s i n g a l s o t h i sp a p e rd e s i g nah i g he f f i c e n c yo r ma r i t h m e t i cf o rh a s h m a p _a p i st h a tm a k eu s eo ft h et r a n s a c t i o np r o c e s s i n gw e r eb e e nd e s i g n e db a s e do nt h e h i b e m a t e 一t h ef u n c t i o n so fw e bp r i n t i n gh a v eb e e nd e s i g n e da n dr e a l i t i e d b a s e do nt h e h i b e m a t e a l s os o m ew e bp r i n t i n g sa p i sh a v eb e e nd e s i g n e db yt h eu s eo fi r e p o na n d j s p e r r e p o r t t h i sp a p e rp u t sf o r w a r dt h es m a r tc o n n e c t i n gf o rd a t a b a s et h a ti sb a s e do nx m l s u p p l y i n gt h ed a t a b a s ec o n n e c t i n gm o d e lo f d a t a _ o p e r a t i o np l a t f o r m m a d eu s eo ft h eh i b e r n a t ec o n n e c t i o na n ds m a r tc o n n e c t i o n t h e s ep a p e rd e s i g n sa u s u a l l yd a t a - o p e r a t i o np l a t f o r mt h a ts u p p o r tm u l t i t h r e a dd e a la n dt r a n s a c t i o nd e a l a l s o t h i sp a p e rd e s i g nt h ea p i sf o rd a t ao p e r a t i o n t h ed a t a - o p e r a t i o np l a t f o r mc o m ef o r mt h eo n eo f t h es o f t w a r es e a r c hn a t i o n a l8 6 3p r o j e c t s t h a ti ss e a r c ha n da p p l i c a t i o no f t h eb u s i n e s sg r o u p w a r eb a s e do nl i n u xp l a t f o r m t h i sp r o j e c th a s b e e np a s s e dt h ea p p r a i s a lo f s c i e n c ea n dt e c h n o l o g ya c h i e v e m e n to r g a n i z e db yn a t i o n8 6 3e x p e r t s a n dt e c h n o l o g yb u r e a u c u r r e n t l y , s o m ep r o d u c e sh a db e e nu s e di ng o v e r n m e n td e p a r t m e n to v e r o n ey e a rb a s e do ht h ed a t a o p e r a t i o np l a t f o r m t h ef a c te x p l a i n st h a tt h ed a t a - o p e r a t i o np l a t f o r m h a sr e a c h st h ed e s i g n e dn e e d w r i t t e nb yl i up a n ( c o m p u t e rs o f t w a r ea n dt h e o r y ) d i r e c t e db yp r o fz h o us h a om e i k e yw o r d s :t h ed a t a - o p e r a t i o np l a t f o r m ,h i b e r n a t e ,g r o u p w a r e ,j 2 e e ,o r m 独创性声明 i 。9 2 9 0 1 6 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其 他人已经发表或撰写过的研究成果,也不包含为获得壹墨圭鲎或其他教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示谢意。 年月日 学位论文版权使用授权书 本学位论文作者完全了解南矗土学有关保留、使用学位论文的规定,有权 保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被套阏和借 阅。本人授权南昌史学可以将学位论文的全部或部分内容编入有关数据库进行 检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位敝作者虢纠学 导师签名:凰以痧 签字日期:厶卯6 年6 月9e t 签字日期;移。6 年月1 日 学位论文作者毕业后去向 工作单位 通讯地址: 电话: 邮编: 硕士学位论文:基于h i b e r n a t e 的数据操作平台的设计与实现 第一章绪论 1 1 课题提出的背景及其意义 软件复用是指重复使用“为了复用的目的而设计的软件”的过程。“。 6 0 年代的“软件危机”使程序设计人员明白难于维护的软件成本是极其高 昂的,当软件的规模不断扩大时,这种软件的综合成本可以说是没有人能负担的, 并且即使投入了高昂的资金也难以得到可靠的产品,而软件重用的思想是解决这 一问题的根本方法。 软件复用的主要思想是,将软件看成是由不同功能部分的“组件”所组成的 有机体,每一个组件在设计编写时可以被设计完成同类工作的通用工具,这样, 如果完成各种工作的组件被建立起来以后,编写特定软件的工作就变成了将各种 不同组件组织连接起来的简单问题,这对于软件产品的最终质量和维护工作都有 本质性的改变。 软件复用经过近3 0 年的发展,已有许多成功的研究和实践成果,但是在j 2 e e 平台上的,针对分布在网络上不同数据库,数据操作方式大致相同的情况下,软 件在跨数据库问的移植非常困难,软件复用效率低下,往往需要针对不同的数据 库编写不同的数据操作函数。 近几年来,在j a v a 开源界流行一种对象关系映射框架”4 3 ( o b j e c tr e l a t i o n m a p p i n g ) h i b e r n a t e ,人们利用这种框架能快速的将关系数据库中的表及表关系 与j a v a 中的实体对象相关联,将对数据库的操作转变成对实体对象的操作,通 过改变配置文件中的数据库连接信息,可以实现对不同数据库的连接。但是由于 h i b e r n a t e 没有提供通用的数据操作a p i ,因此在软件复用上只能做到具体实体 对象的复用,不能实现数据操作的复用,软件的复用效率不高。 如何能在j 2 e e 平台上设计出一种通用的数据操作平台,让业务开发完全独 立于数据操作,对增强软件的复用性具有十分重要的理论和实践意义。 1 2 基于h i b e r n a t e 的数据操作平台 在项目实践开发中,本人发现在基于j 2 e e 平台下的开发比基于n e t 平台下 的开发要困难许多,一个主要的原因是3 2 e e 平台下的可复用组件过少。针对不 硕士学位论文:基于h i b e r n a t e 的数据操作平台的殴计与实现 同的应用领域,不同的数据库环境,程序员有时不得不从头开始设计和开发,开 发难度巨大,特别是直接采用j d b c 方式进行数据库操作,一方面工程浩大、代 码冗长,另一方面不易维护、风险性更大,这些软件代码在软件复用上也非常困 难。于是,各个团体都试图找出一种好的解决方案,以求摆脱这方面的风险,减 轻开发负担。图1 1 是直接采用j d b c 方式进行数据库开发的模型。 匿弗 臂臣夏x o j d b cl 八 数 妻匪矜 连接 厂 据 统 模块3k 爿 库 鏖多 图l _ 1 直接采用j d b c 方式进行数据库开发的模型图 从图1 1 可知,系统采用的是i d b c 连接作为软件复用的组件,在应用系统 中,每增加一个模块,就必须针对特定的j d b c 连接编写相应的操作代码,造成 软件复用性不强。 利用h i b e r n a t e 框架,能把对象模型表示的对象映射到基于s q l 的关系数据 模型结构中。h i b e r n a t e 不仅仅管理j a v a 类到数据库表的映射,还提供了数据 查询和获取数据的方法,可以大幅减少开发时人工使用s q l 和j d b c 处理数据的 时问。h i b e r n a t e 的目标是对于开发者通常的数据持久化相关的编程任务,解放 其中的9 5 的工作,这使得h i b e r n a t e 成为一种非常好的针测数据库方面的软件 复用组件。图1 2 是基于h i b e r n a t e 的软件架构模型图。 瓦1 h i b e m a t c 臂臣斗 晕 j n d i 数 系】 : 1 r l 据 、j 厂卜 统 模块3 降令 瞎 j d b c 库 _ _ i 兰竺 j t a 图1 2 基于h i b e r n a t e 的软件架构模型图 如图1 2 所示,h i b e r n a t e 封装了j n d p i 、j d b c 1 和 t a 耻m 3 m ,提供了 硕士学位论文:基于h i b e m a t e 的数据操作平台的设计与实现 各种数据操作a p i 接口,应用系统中的各个模块只需要调用j _ l i b e r n a t e 的a p i 函数,就能实现对数据库的调用,因此利用t l i b e r n a t e 开发比直接采用j d b c 开 发的软件复用性更强。 本人在项目实践中针对h i b e r n a t e 进行了二次封装,开发出一种使用更为方 便的数据操作平台( 数据操作平台是组件集合,它是对h i b e r n a t e 的二次封装, 在数据操作平台内部,包括一套自定义的事务处理、线程处理、s e s s i o n 处理、 数据库连接机制和数据操作;同时数据操作平台封装了各种工具接口、存储过程 a p i 、w e b 打印a p i 及自定义持久化a p i 等各利一常用功能。因此,利用数据操作平台, 可以不必考虑底层各种数据操作及事务操作的实现,采用统一的数据操作函数, 通过修改配置文件,就能实现针对不同数据库的统一操作,同时利用数据操作平 台提供了丰富的工具接口,能快速搭建应用系统。) ,将软件复用从h i b e r n a t e 组 件提升到平台复用的程度,基于这个平台,开发人员可以快速的搭建自己的应用 系统,同时不用考虑任何底层的数据连接和操作的实现。图1 3 是基于数据操作 平台的软件架构模型。 图1 3 基于数据操作平台的软件架构模型 由图1 3 9 知,数据操作平台封装了数据连接、数据操作两部份,同时也为 应用系统提供了丰富的a p i 接口函数,应用模块仅需编写相应的业务逻辑,然后 调用相应的数据操作a p i 就能实现各自的操作。因此,基于数据操作平台比基于 h i b e r n a t e 的软件复用性更强,同时,应用模块由于仅包含业务逻辑,开发l :乜相 对简单。 硕士学位论文:基于h i b e r n a t e 的数据操作平台的设计与实现 1 3 本文主要研究内容及论文组织结构 本文在针对h i b e r n a t e 技术研究的基础上,创新性的构建基: :h i b e r n a t e 的数 据操作平台,并对h i b e r n a t e 技术进行了一定量的扩充,其具体内容包括: ( 1 ) 对h i b e r n a t e 中的几个核心技术原理进行分析,包括映射机制、缓存机 制、体系结构等。 ( 2 ) 扩展t h i b e r n a t e 的基本功能,包括自定义持久化、存储过程a p i 的设 计、报表打印。 ( 3 ) 设计并实现了数据操作平台,包括事务处理、线程处理、连接处理等 方面。 本课题主要是在j 2 e e 平台上开发完成,利用h i b e r n a t e 的一些特性,针对 h i b e r n a t e 进行了封装改进,在研究中使用j a v a 语言进行开发,开发环境为i b m t 2 2 ,5 1 2 m 内存,4 0 g 硬盘,w i n d o w s 2 0 0 0s e r v e r 系统,编译环境j b u i l d e r x 。 沦文的内容安排如下: 第一章绪论主要概述了软件复用的概念、发展现状、面临的困难及开发数据 操作平台的原因。 第二章介绍了数据操作平台中的核心技术及对h i b e r n a t e 中几个关键技术的 研究。 第三章对i l i b e r n a t e 技术进行了一定量的扩展,包括自定义持久化、存储过 程凋用和w e b 打印。 第四章基于l t i b e r n a t e 设计并实现了通用数据操作平台,主要描述了数据连 接设计和数据操作a p i 的设计。 第五章介绍了数据操作平台的应用及性能分析。 第六章是对论文工作的总结及未来工作展望。 4 硕士学位论文:基于h i b e r n a t e 的数据操作平台的设计与实现 第二章数据操作平台的核心技术 2 1j d b c 技术 j d b c 是1 a v a 的开发者s u n 的j a v a s o f t 公司制定的j a v a 数据库连接( j a v a d a t ab a s ec o n n e c t i v i t y ) 技术的简称,是为各种常用数据库提供无缝联接的技 术。j d b c 在w e b s n i n t e r n e t 应用程序中的作用和o d b c 在w i n d o w s 系列平台应用程序 中的作用类似。o d b c ( o p e n d a t ab a s ec o n n e c t i v i t y ) ,称为开放式数据库互联技 术,是由m i c r o s o f t 公司倡导并得到业界普遍响应的一门数据库连接技术。j d b c 现在可以连接的数据库包括:x b a s e 、o r a c l e 、s y b a s e 、a c e e s s 以及p a r a d o x 等。“。 j d b c 定义了4 种不同的驱动,具体来说,包括有。”。2 : ( 1 ) j d b c o d b c 桥女h o d b c 驱动程序。 ( 2 ) 本地a p i 一部份用j a v a 来编写的驱动程序。 ( 3 ) j d b c 网络纯j a v a 驱动程序。这种驱动程序将j d b c 转换为与d b m s 无关的 网络m 议,这种协议又被某个服务器转换为一种d b m s 协议。 ( 4 ) 本地协议纯j a v a 驱动程序。 j d b c 是利用数据库统一资源定位器来设置数据库的连接:数据库统一资源定 位器( u r l ) 代表一个完全合格的数据库连接的名字,该名字标识所要连接的数据 库和数据库驱动程序。为了完全描述一个连接名,必须知道一些信息,如数据库 驱动程序的类型、数据库类型以及数据库连接的类型,还要知道些连接实例的 信息,如用户、口令以及该数据库实例的i p t 电t j k 。数据库u r l 用如下形式的一个 字符串表示:j d b e :s u b p r o t o c o l :s u b n a m e ,其中:j d b c 是对所有j d b c 数据库的u r l 中所用的数据库驱动程序类型关键字;s u b p r o t o c o l 代表用户想要连接的数据库 的类型:s u b n a m e 提供建立连接时所需的数据库类型的额外信息。”。 2 2x m l 技术 x m l 文件是一些符合x m l 语法规则的结构化数据块。x m l 文档主要具有能够在 应用程序之问进行传输的特点。发送端应用程序可直接生成x m l 文档,或是使用 特殊的x m l 构造器产生x m l 文档,该文档可在网络上以与通信协议无关的直式进行 传输;接收端应用程序便随即利用x m l 分析器把x m l 文档流分析成为一种可被程序 硕士学位论文:基于h i b e r n a t e 的数据操作平台的设计与实现 便于操作的格式。x m l 文档可在应用程序之问进行交换,而不需要考虑应用程序 的实现语言和宿主平台”1 。 在数据操竹! 平台中,有两处涉及到x 扎文件:一是h i b e r n a t e 的配置文件及持 久化类的配置文件,另一处是第四章论述的s m a r t 连按时的x m l 配置文件。 h i b e r n a t e 配置文件的作用是连接数据库及查找持久化类配置文件。持久化类的 配置文件可以由h i b e r n a t e 的映射工具自动生成。h i b e r n a t e 先查找配置文件,然 后解析配置文件查找持久化类的配置文件,根据持久化类的配置文件最终将持久 化类与数据库关联。s m a r t 配置文件的作用是数据操作平台根据) ( m l 配置文件内容 的不同动态的选取连接数据库的方式( 详见第四章4 2 3 小节) 。 数据操作平台中大量的使用t x m l 文件,因此如何选用高效的x m l 解析器,对 平台的内存消耗、运行速度及可伸缩性显的尤为重要。 目前有三种) ( m l 解析技术”1 :文档对象模型( d o c u m e n to b j e c tm o d e l ,d o m ) , 一个来w 3 c 的成熟标准。用于x m j 的简单a p i ( s i m p l ea p if o rx m l ,s a x ) , 第一个被广泛采用的用j a v a 编写的x m la p i ,是一个事实上的标准。用于y n l 的数据流a p i ( s t r e a m i n ga p if o rx m l ,s t a x ) ,j s r 一1 7 3 中采用的一个很有前途 的新解析模型。 这三;f 【p x m l 解析器都有各自的优缺点,因此在数据操作平台中,根据x m l 解析 的应用范围来选择不同的解析器。h i b e r n a t e 需要根据实际应用的不同随机地一 次访问某个持久化类的x m l 配置文件,因此使用t d o m 4 j “”解析( d o m 4 j 解析器是 d o m 中的一种,速度较其他类型的d o m 解析器快) 。在进行数据库的s m a r t 连接方式 时,由于是简单的读取x m l 配置文件,因此使用t d i g e s t e r m l 解析( d ig e s t e r 解 析器是s a x 中的一种,详见第四章) 。 2 3j t a 技术 j t a ( j a v at r a n s a c t i o na p i ) 是j a v a 事务处理a p i ,是j a v a 的应用程序和应用 程序服务器与事务、事务管理器和资源管理器进行交互而定义的标准接口。j t a 模型遵循基本的x o p e nd t p 模型,它包括j t a 事务管理、j t a 应用程序接口年t j t a 资源管理。 j a v a 事务a p i ;f n j a v a 事务服务( j t s ) 为j 2 e e 平台提供了分布式事务服务。一个 分布式事务包括一个事务管理器和一个或多个资源管理器。斗个资源管理器是任 意类型的持久化数据存储。事务管理器承担着所有事务参与单元者的相互通讯的 硕士学位论文:基于h i b e m a l e 的数据操作平台韵设计与实现 责任。j t a 事务比j d b c 事务更强大。个j t a 事务可以有多个参与者,而一个j d b c 事务则被限定在一个单一的数据库连接。 在本文设计的数据操作平台中,j t a 的作用是操作数据库时维护了事务的原 子性、致性和隔离性“。在实现上,t t b e r n a t e 底层封装了j t a 的事务管理,数 据操作平台利用h i b e r n a t e 提供的事务处理接d t r a n s a c t i o n 类,在数据提交操作 前和数据操作后分别进行了事务处理( 详见第四章4 2 2 ) ,实现了事务的“两段 锁协议”“”。 2 4h i b e r n a t e 技术 h i b e r n a t e 是由g a v i nk i n g “”于2 0 0 1 年1 1 月设计实现的一个面向j a v a 环境的 对象关系数据库映射工具。对象关系数据库映射( o b j e c t r e l a t io n a lm a p p i n g ( 0 r m ) ) 这个术语表示一种技术,用来把对象模型表示的对象映射到基于s q l 的关 系模型结构中去,它既可以用来在j a v a 应用程序中取代大部分j i d b c 代码,也可以 整合到j 2 e e 系统中作为持久层框架。目前h i b e r n a t e 已经成为j 2 e e 平台上最流行 的对象关系映射框架,有关h i b e r n a t e 的使用方法和操作手册在h i b e r n a t e 网站“” 和一些书籍上“”都有介绍,但对h i b e r n a t e 的原理介绍却非常少,本文将在下 几节中对h i b e r n a t e 中的几个关键技术原理做深入研究。 2 4 1h i b e r n a t e 的数据持久层 成。 1 、h i b e r n a t e 的数据持久层构成 h i b e r n a t e 的数据持久层由配置文件和持久化对象( p e r s i s t e ro b j e c t s ) 构 d a t a b a s e i ,一一,。,。j n 2 1h i b e r n a t e 的体系结构”3 7 硕士学位论文:基于h i b c m a l e 的数据操作平台的设计与实现 由图2 1 可知h i b e r n a t e 使用数据库和配置文件为应用系统提供持久化服务 和持久化的对象。数据持久层是处在数据库和应用系统中问的一个层次, h i b e r n a t e 完成对数据库的操作,应用系统以面向对象的方式操作持久化对象, 再调用i l i b e r n a t e 的a p i 接口函数完成数据库的操作。 2 、实现原理 对h i b e r n a t e 的底层架构图进行分析,可以得出, h i b e r n a t e 的数据持久层的实 现原理。 图2 2h i b e m a t e 的底层架构图”q 由图2 2 可知,h i b e r n a t e 封装了j n d i 、j d b c 和j t a 来实现和支持s e s s i o n ”1 管理、t r a n s a c t i o n ( 事务) 管理和数据库连接管理,最终通过s e s s i o n 实现划持 久化对象的操作。 j n d i 是j a v a 命名和目录接口,在分布式计算环境通常使用命名和目录服务来 获取共享的组件和资源。命名和目录服务将名称与位置、服务、信息和资源关联 起来。命名服务提供名称一对象的映射。目录服务提供有关对象的信息,并提供 定位这些对象所需的搜索工具。h i b e r n a t e 本身没有实现j n d i b 艮务,依靠外界提 供的j n d i 服务,将h i b e r n a t e 的s e s s i o n f a c t o r y 对象邦定至q j n d i ,或者通过j n d i 获取数据源和其他对象“”。 j d b c 是一个在j a v a r l = 以面向对象的方法连接数据库的技术。它是对o d b ca p i 进行的一种面向对象的封装和重新设计,利用j d b c 能不依赖供应商的代码,查询 和操纵数据库。j d b c 提供了一些相当底层的方法来存取数据库,同时电在相当高 层提供了功能强大的对象来处理数据库。h i b e r n a t e 通过封装j d b c 实现对数据库 的操作,h i b e r n a t e 中的s e s s i o n 利用j d b c 的查询接口,封装了j d b c 的查询方法, 在抽象的层次上同时支持t s q l 和h q l ”两种查询语言。 堡圭堂焦丝苎! 苎王翌虫! 竺驾塑塑塑堡堡! 鱼塑堡盐皇窭垫 j t a 是j a v a 中进行事务划分的技术。j t a 主要用于分布式多数据源的两阶段提 交事务处理,h i b e r n a t e 封装了j t a 事务处理,通过配置借用_ ;j 2 e e 月髓务器的j t a 标准事务服务,实现了h i b e r n a t e 中的t r a n s a c t i o nf a c t o r y ”1 的管理。 s e s s i o n ”。h i b e r n a t e 中的s e s s i o n 与j a v a 中的s e s s i o n 并不是同一个概 念,它是由h i b e r n a t e 中的s e s s i o n f a c t o r y o ”创建的。s e s s io ef a c t o r y 是邦定在 j n d i 服务上,因此能通过创建s e s s i o n 实现对h i b e r n a t e 的配置文件的获取、解析 和查找数据持久化对象的配置文件,将数据源与持久化对象关联起来。h i b e r n a t e 利用c g l i b “”和j a v a 反射技术”操作持久化对象,通过代理模式,在持久化对象 的属性方法被调用的同时穿插外部代码,再利用c g l i b 的编程接口来替换持久化 类的对象和方法,因此h i b e r n a t e 自g 方便的处理大量不同类别的持久化对象。 2 4 2 对象关系映射 从功能上划分,h i b e r n a t e 中包含两类映射文件( 都是 h b m x m l 格式文件) , 一种是持久化类对应的配置文件,另一种是连接数据源并指定持久化类配置文件 位置的文件。 1 、两种配置文件的作用 图2 3h i b e r n a t e 的目b 置文件调用模型图 从图2 3 可知,应用系统在处理某一业务时,先对数据持久层“”1 进行操作, 再调用h i b e r n a t e 的s e s s i o n ,如果s e s s i o n f a c t o r y 不存在,则先创建 s e s s i o n f a c t o r y ,如存在则通过x m 。配置文件关联数据库,同时查找持久化层中 的配置文件,将持久化对象与数据库中的张或多张表进行关联。 2 、对象关系映射原理 9 硕士学位论文:基于h i b e h m t e 的数据操作平台的设计与实现 图2 4 对象集、h i b e r n a t e 框架及表集之间的关系图2 5 对象与表及表关系圈 图2 4 说明了h i b e r n a t e 是表集与对象集之间的映射工具,图2 5 说明表及表 关系于对象关联的方式,即表中的字段与对象中的属性一一对应,表关系与对象 中的某个特定的属性对应,对象中的行为是一些对对象中属性的g e t 矛l s e t 操作, 对象与表及表关系产生一种对应关系。在h i b e r n a t e 中加入x m i 。配置文件,解决了 字段类型与宇段长度的问题,同时在配置文件中加入了对表及表关系操作方式的 约束,如:级联操作( c a s c a d e ) 、外连接( o u t e r j o i n ) 、控制方向( i n v e r s e ) 、 表关系( m a n y - t o o n e ) 等。 2 4 3h q l 语言 h i b e r n a t e 的- - 个非常显著的特点是它提供的h q l 语言( h i b e r n a t eq u e r y l a n g u a g e ) ,h q l 。”。”语言以面向对象的操作方式替代了关系语言( s q l 语言 。 h i b e r n a t e 的效率异常的高,这得益于h q l 语言的设计。 在住房管理系统( 本人参与8 6 3 项目中的一个子课题) 中,我们运用h i b e r n a t e 技术进行开发,发现采用h i b e r n a t e 方式首次连接数据库的时间要远大于采用 j d b c 方式的时间i 而在以后的数据库操作中,h i b e r n a t e 在删除、更改、插入时 的效率更高,数据查询时的效率也非常接近j d b c 方式1 ,在重复查询时查询效率 要l l j d b c 方式速度更快,而在网络环境中重复查询更加普遍。 在住房管理系统开发时,采用单步跟踪的方式进行调试,发现在第一次用 h i b e r n a t e 连接数据库时要创建s e s s i o n f a cc o r y ,耗用了大量的时问。同时我们 还发现,随着应用系统中的映射文件数目增加时,h i b e r n a t e 耗用时间更多4 “, 通过观察控制台的输出结果,我们发现所有的映射文件在首次运行时都要预先加 载,如图2 6 所示。 。 硕士学位论文:基于h i b e m a t e 的数据操作平台的设计与实现 2 0 0 6 0 41 0i 上:0 8 :2 6 6 9 s 埘mf 蹦e c ,凹a :2 s e ) 一h 啪“口c l 5 o - 血刊曲讹 2 0 0 6 0 4 0 82 6 ,? i sd e b u gt o i n d e r l o b 9 1 h b l m e d e j d u d 2 0 d 6 0 t 。1 01 i :0 8 :2 6 ,自sb 帅cl 如b l n d e 【j 一1 0 8 9 1 h q e d 埘蝴e r 一陆c 【舯屿l 2 0 0 6 0 4 圳1 0 :6 ,b sb 咖b 邱时l n d t i 0 8 9 1 一h 啪t d 蚪氍l c o p i c 耻l p i c 2 0 0 6 0 41 0l i t 0 b :2 6 7 b s d 州ct l 蛐j l o b 9 1 一h 6 冲t d o p e r 四r j 奸5 n i 叫咄 l 岫,吣g 2 0 0 6 州0 王l :0 8 ;z 6j 9 5d e 哪f 咖- j l 0 0 9 1 一目啪e d 唧c r 靶r _ h n 悃e 叶 z 0 0 6 0 4 1 0l l :0 8 :2 6 ,7 9 脚5 珈删埘e r ,m :1 e 9 】一印p 。d 哪。q 【一和e 日h u 一一l 掣啪c 口n c e 北 2 0 0 6 * 1 01 1 :0 0 :2 6 ,日0 0 6f 血血i 咖册:1 锄】一h 哪e d 哪o q j ”c o 叫e j n 咂。一z j 啊州,n o n 洲一驰一1 9l i ;6j 日b s 比哪e 助i m 删:胂】一印p e d 哪e r 碍l c 科咖研z 钟n 2 0 0 6 一0 u :0 8 ;z 6 ,9 f i 5 肛啊f 咖,删0 e 9 】一印p e d 哪c r 靶r “q e u m z 卅u ;0 8 :2 6 ,9 6 5d e 明6f c o n f t 口毗,川3 l _ 删l l 一o 【* 血i q e - d 州州机阳 6 【觚岫z e 删 c 0 1 目 z 0 0 6 0 1 01 :0 8 :3 7j 1 5 5 玛邛f c o n f i 岬咖- ,4 4 1 )日砷p 扭g 【e c 。i 肿,x n 2 0 0 6 0 4 - 1 0n :0 8 :0 7 ,2 0 5n 咖6l m n n 钾知,恤r j ) y 扭口叫h 口咖1 帅诣3 c e f o c 口e m b e n a 口i 叫一0 - 0 l “ 2 0 0 1 0 l l 删0 0 :一a o $ 6 m e a t l t 鸭e m :s ”一c 蝴d h t 印- ,h 1 吨【n a t c e g o 叶“h m e l 叩p - b 口一,o d c i 岬t 恤 2 0 0 60 4 一1 0 1 1 :0 e :2 - 目m 【一2 5 自i j 6 坤i - 砧,j 2 0 0 6 0 4 圳i o删0 0 : ,3 5 6d 矾f 圳妇,酬0 日9 】e a p p e d 岬岍:址s 砌lid_id 2 0 0 6 一ou 川0 0 e ,:,7p e s 0 0 【灿帆,一:1 0 0 9 】一e 珊d 岬u 5 hi d 2 0 8 6 0 4 - 1 0u 一0 8 :2 8 ,2 9 ,d 邛n 6 【胛i 0 8 9 】一e 靴d 哪e e 即眦b o a e l l d 图2 6 控制台输出的部分映射持久化类信息 造成上述状况的原因如下: ( 1 ) h i b e r n a t e 的h q i 语言在查询时需要将h q l 语言转换成s q l 语言,所以对 数据进行查询时,h q l 语言的效率要e g s o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论