




已阅读5页,还剩66页未读, 继续免费阅读
(通信与信息系统专业论文)基于struts和hibernate框架构建web应用的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
声h - a d wi t h t h e r a p i d d e v e l o p m e n t o f n e t w o r k a n d t h e w i d e u s e o f j 2 e e p l a t f o r m , t h e m u l t i - l a y e r we b s t r u c t u r e b a s e d o n b / s b e c o m e s t h e m a i n s t r e a m o f t h e we b a p p l i c a t i o n . b u t t h e r e a r e s t i ll s e v e r a l d i s a d v a n t a g e s a s l o w s o f t w a r e r e u s a b i li t y a n d d i f f i c u l t m a i n t e n a n ce i n e x p l o i t a t i o n . t h e r e f o r e , h o w t o o r g a n i z e s o f t w a r e 勿u s in g a b e tt e r a r c h i t e c t u r e , g o o d d e s 咖 p a t t e r n s a n d r e u s a b l e f r a m e w o r k 运d e v e l o p i n g w e b a p p l i c a t i o n h a s b e c o m e o n e o f h o t s p o t s 恤t h e d e v e l o p m e n t o f i n t e r n e t t e c h n o l o g y a n d a f i e l d t h a t i s w e l l w o r t h s t u d y i n g . s t r u t s i s o n e o f t h e m o s t p o p u l a r f r a m e w o r k s i n w e b a p p li c a ti o n , i t c o m b i n e s a g ro u p o f c o o p e r a t e d c l a s s , s e r v l e t a n d t a g l i b r a ry i n t o a u n i t e d f r a m e w o r k , w h i c h b r i n g s t h e a b i li ty o f mv c i n t o f u ll p l a y . t h e r e f o r e , s t r u t s c a n d i v i d e a n y c o m p l i c a t e d w e b a p p li c a t i o n i n t o m o d e l , v i e w a n d c o n t r o l l e r , w h i c h h e l p u s i m p r o v e r e u s a b i l i ty a n d e x p a n d a b i li t y o f a p p l i c a t i o n . b e s i d e s , a s a n e x cel l e n t p e r s i s t e n t l a y e r f r a m e w o r k , h i b e r n a t e p r o v i d e s p o w e r f u l 砌e c t t o r e l a t i o n a l d a t a m a p p i n g s e r v i ce, w h i c h m a k e s o p e r a t i o n f u ll 喇e c t - o r i e n t e d w i t h t h e m a p p i n g m e c h a n i s m . c o n s e q u e n t l y , i t w i l l b e h e lp f u l t o d e c r e a s e t h e d i f f i c u l t y o f e x p l o i t a t i o n g r e a t l y i n b u s in e s s m o d e l 妙t a k i n g a d v a n t a g e o f h i b e rn a t e t o s u p p o r t t h e m o d e l p a rt o f s t r u t s . t h i s p a p e r i n t e g r a t e s s t r u t s w i t h h i b e rn a t e a n d p r o v i d e s a n e n t i r e s o l v i n g s c h e m e o f e n t e r p r i s e a p p li c a t i o n w h i c h i s fl e x i b l e t o e x p l o i t , l o w c o u p l i n g a n d e a s y t o m a i n t a i n . t h i s p a p e r 丘 r s t l y d e s c r i b e s t h e a r c h i t e c t u r e a n d p r i n c i p l e o f s t r u t s f r a m e w o r k b a s i n g o n t h e i n t ro d u c i n g o f t h e o r d i n a ry m o d e l o f w e b s y s t e m s e x p l o i t a t i o n a n d m v c m o d e l . s e c o n d l y , t h r o u g h p o s i n g t h e c o n cep t i o n o f d a t a p e r s i s t e n ce l a y e r , t h i s p a p e r i n t r o d u c e s t h e o p e r a t i n g m e c h a n i s m o f h i b e r n a t e . t h i r d l y , t h r o u g h a n e x a m p l e o f a p p l 户 n g s t r u t s a n d h i b e rn a t e f r a m e w o r k t o m a n a g e m e n t s y s t e m o f r e i m b u r s e m e n t in s o c i a l i z e d m e d i c i n e , t h i s p a p e r a n a l y z e s in d e t a i l t h e a p p l i c a t i o n o f s t r u t s a n d h i b e r n a t e f r a m e w o r k i n t o p r a c t i c a l d e v e l o p i n g p r o c e s s . a t l a s t , i t im p r o v e s t h e q u e ry c a c h e o f h i b e r n a t e a n d h a s g o t a s a t i s f i e d r e s u lt 血o u 沙t e s t i n g . k e y wo r d s : s t r u t s , p e r s i s t e n ce l a y e r ,o b j e c t - r e l a t i o n ma p p i n g , c a c h e . 学位论文独创性声明 学位论文独创性声明 本人声明 所呈交的学位论文是本人在导师指导下 进行的 研究工作及取 得的 研究成果。据我所知,除了 文中 特别加以 标注和致谢的地方外,论文中 不包含 其 他 人已 经 发 表 或 撰 写 过的 研 究成 果 , 也 不 包 含为 获 得 一 直a或 其 他 教 育 机构的 学位或证书而使用过的材料。与我一同工作的同志对本研究 所做的 任何 贡献均已在论文中作了明确的说明并表示谢意。 学 位 论 文 作 者 签 名 手 写 ,: 赵小 液 . 签 字 日 期 : ) i 年 月i 日 学位论文版权使用授权书 本学 位论 文 作者 完 全了 解 -a pir ,达堂 - 有 关 保 留 、 使 用学 位 论 文 的 规 定 , 有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅 和 借阅 。 本 人 授 权 直星去堂可以 将 学 位 论 文的 全 部 或 部 分内 容 编 入 有 关 数 据 库 进行检索, 可以 采用影印、缩印或扫描等复制手段保存、 汇编学位论文。 ( 保密的 学位论文在 解密后适用本授权书) 学 位 论 文 作 者 签 名 (手 写 ):很、 .稚 签 字 日 期 :-d u 01 年石 月 2s 日 ” 师 签 “ 手 写 )礁 签 字 日 期 : 4 p 7年 月 s日 学位论文作者毕业后去向: 工作单位: 通讯地址: 电话: 邮编: 第一章绪论 第一章绪论 1 . 1课题背景 当 前, s u n公司 提出的j 2 e e ( j a v a 2 e n t e r p r i s e e d i t i o n ) 已 经逐 渐成为企业 we b 应用开发的标准, s e r v l e t / j s p 技术也得到了广泛的应用。 随着j s p 技术的成 熟, 越来越多的开发 人员开 始使用, e b 应用框架 j a k a r t a - s t r u t s 是a p a c h e j a k a r ta 软件组织提供的一项开放源代码项目,它为j a v a we b 应用提供了模型一视图一 控制器 ( m v c ) 框架, 尤其适用于开发大型可扩展的w e b 应用。 但是s t r u t s 架 构只解决了视图层、业务层和控制层的分离,并没有为涉及和创建模型组件提 供现成的框架。不过,s t r u t s 允许使用其他模型框架来处理应用的业务领域。 在采用s t r u t s 架构的企业级应用程序中, 最有价值、 开发人员最关心的是如 何实现复杂的业务逻辑, 而绝大多数业务对象都涉及到关系数据库。 在采用j a v a 作为w e b 应用的开发语言时,传统的方法是直接通过j d b c a p i 与数据库进行 交互。但是这个工作量很大,而且一旦业务逻辑稍微有一些变更,就要大量地 更改这些j d b c中的s q l语句,因此不管是开发还是维护系统都很不方便。于 是, 人们想到了 在业务逻辑层和数据库层之间增加一个持久层,专门负责实现 对象和关系数据库之间的映射,完成将对象作为永久信息存储和访问,即对象 的持久化工作。 作为s t r u t s 架构体系中单独的一层,完善的持久层应该达到以下目 标: .代码可重用性高,能够完成所有的数据库访问操作。 .如果需要的话,能够支持多种数据库平台。 .具有相对独立性,当持久层的实现发生变化,不会影响上层的实现。 目 前在持久层领域,已 经出现了 许多优秀的对象一关系映射框架, 有的是 商业性的,有的是开放源代码的。h i b e r n a t 。就是一种越来越受欢迎的开放源代 码的对象一关系映射框架。h i b e r n a t e提供了强大、高性能的对象到关系数据库 的持久化服务。 利用h i b e r n a t e ,开发人员可以 按照j a v a 的基础语义进行持久层 开发。 第一章绪论 1 . 2研究内容 本文提出了一种基于s t r u t s 和h i b e r n a t e 的we b 应用系统多层框架模型,通 过对模型主要层次的分析和详细讨论,提供了一种实现多层we b 应用系统开发 的解决方案。为了充分说明框架的先进性及可用性,本文结合项目 “ 医务报销管 理系统” 的设计实现,对集成的框架进行阐述。 本论文研究的主要内容如下: ( 1 ) 在分析w e b 系统开发的一般模型和m v c设计模式的基础上, 详细阐 述了s t r u t s 框架的体系结构和基本原理。 ( 2 )研究了将持久化框架集成到 s t r u t s 应用中的优点,深入探讨了持久层 的对象一关系映射机制,论证了持久层在实际开发中的重要性。 ( 3 ) 比较在j 2 e e平台下开发的几种主流持久化方案, 详细研究了h i b e r n a t e 的体系结构和实现对象一关系映射的关键技术。 ( 4 )利用以上的理论基础提出基于 s t r u t s 和 h i b e rn a t e的 we b应用系统的 解决方案,并将此方案应用到医务报销管理系统中进行实践。 ( 5 )对实践过程中的关键技术进行分析、研究,并采用语义缓存技术优化 h i b e rn a t e 的查询性能。 1 . 3研究意义 在南昌大学医务报销管理系统的研究开发过程中,采用基于 mv c模式的 s t r u t s 框架结合实现对象一关系映射的h i b e rn a t e 技术作为系统的设计方案,适 合系统规模,具备以下意义: ( 1 ) s t r u t s 技术是近年来w e b 开发中 最为流行的 框架技术之一 , 它 通过把一 组相互协作的类、s e r v l e t 以及标签库结合在一个统一的框架中,将 m v c模式 所具有的“ 分离业务逻辑和显示逻辑” 的能力发挥到了极点。对于一个复杂的应 用, s t r u t s 框架可以方便迅速地将其划分成模型、 视图和控制器组件, 提高了应 用的可重用性和可扩展性。同时,其分层设计的体系结构,使系统在内容不断 增长的情况下仍能保持清晰的结构。 ( 2 ) h i b e rn a t e 作为 优秀的 持久层框架实现, 提供了 强大、高性能的对象到 关系型数据库的持久化服务,其良 好的持久层映射机制,使得操作完全面向对 象,明显提高了开发效率。 第一幸绪论 ( 3 ) 将h i b e r n a t 。 技术和s t r u t s 架构整合起来, 让s t r u t s 负责降低系统总架 构的拐合性,让h i b e r n a t e 负责降 低业务模型部分的开发难度,可以得到一个开 发灵活、低祸合及易于维护的系统的完整解决方案。 i a组织结构 全文共分为七个章节。 第一章 绪论 简要介绍了课题研究背景、研究内容以 及研究意义。 第二章 mv c设计模式和s t r u t s 框架技术 首先介绍了w e b 应用开发的两大模式:mo d e l 1 和 mo d e l 2 ,然后探讨了 m v c设计模式,阐述了mv c的原理,分析了mv c设计模式的优点和适用范 围。 最后在此基础上引入s t ru t s 框架, 对s t r u t s 框架的体系结构及核心组件作了 阐述和分析,研究了s t r u t s 对m v c设计模式的实现方式。 第三章 j a v a 对象的持久化与持久层的设计 提出对象持久化和数据持久层的概念,阐述了对象一关系映射机制的实现 原理和优势,分析比 较了h平台下的几种主流持久化方案及其优缺点。 第四章 h i b e rn a t e 技术 详细阐述了持久化框架 h i b e ma t e的体系结构和实现原理,并对 h i b e ma t e 的核心技术进行分析研究,包括映射机制和缓存机制。 第五章 医务报销管理系统设计 介绍了南昌大学医务报销管理系统的功能结构。并根据系统特点和设计要 求提出了基于s t ru t s 和 h i b e rn a t e 的we b 应用系统的解决方案, 从系统架构的角 度分析该解决方案的设计思想和理念,为最后的实践作了充分的 准备工作. 第六章 医务报销管理系统的实现 通过对医务报销管理系统的实现,对提出的解决方案进行了实践验证,并 采用语义缓存技术优化h i b e rn a t e 的查询性能。 第七章 总结 对全文做了总结,并指出了不足和进一步的工作。 第二章mv c设计模式和s t r u t s 框架技术 第二章mv c设计模式和s t r u t s 框架技术 2 . 1 j a v a we b 应用系统开发的一般模型 随着具有优秀跨平台性的j 2 e e平台的出 现和发展, 越来越多的w e b 应用开 始在j 2 e e平台上进行开发,而作为j 2 e e平台主要组成部分之一的j s p技术, 逐渐受到了开发人员的广泛青睐,在we b 应用系统的开发过程中占 据了重要的 一席之地。因为j s p页面不仅拥有跨平台和跨w e b 服务器的特性,而且可以非 常容易地将业务逻辑、服务器端处理过程和静态 h t ml页 “ 所见即所得”的功 能相结合,同时实现显示、业务逻辑和流程控制等功能,从而帮助开发人员快 速的完成任务。 j s p技术规范给出了两种使用j s p开发w e b应用的方式,它们分别是j s p m o d e l l 和j s p m o d e l 2 f t 1 . 2 . 1 . 1 j s p mo d e l l m o d e l l 的 基 础是j s p 文 件, j s p 从h tt p 请求 中 取得 参 数, 调 用 所 需的 业 务 逻辑, 处理h t t p 对话, 然后生成h t m l 页面。 这种模式的优点是简单, 可以 很 好的满足小型应用开发的需求。虽然它也实现了页面表现和业务逻辑相分离, 然而不加选择地随意运用它,会导致j s p页面内 嵌入大量的j a v a 代码,尤其是 当要处理的业务逻辑比较复杂时,这种情况会变得非常糟糕。大量的嵌入式代 码会使整个页面程序变得异常复杂。显然,它不适合大型应用的需求,尤其是 在企业级应用的开发过程中,使用它难免会导致定义不清的响应和项目管理的 困难。 2 . 1 . 2 j s p mo d e l 2 m o d e 1 2 是对m o d e l l 的改进,它吸取了j s p 和s e r v l e t 两种技术各自 的突出 优点, j s p 技术用于表现页面, s e r v l e t 技术负责完成大量的业务处理, j a v a b e a n 用来存储数据。 其中, s e r v l e t 充当一个控制者的角色, 它创建j s p 所需的j a v a b e a n 对象,并根据用户请求选择合适的 j s p页面返回给用户。这是一种有突破性的 软件设计方法,它清晰地分离了表达和内容,明确了角色定义以及开发者与网 页设计者的分工。把应用逻辑、处理过程和显示逻辑分成不同的组件实现,弥 第二章mv c设计模式和s h u t s 框架技术 补了m o d e l 1 的不足。 2 . 2 mv c设计模式 m v c是 m o d e l - v i e w - c o n t r o l l e r 的缩写,即 模型一 视图一 控制器。 m v c是 x e r o x p a r c在八 十年代为编程语言s m a l l t a l k - 8 0 发明的一种软件设计模式,至 今己被广泛使用。 最近几年被推荐为s u n 公司j 2 e e平台的设计模式, 受到越来 越多的, l e b 开发者的 欢迎 2 1 2 . 2 . 1 mv c框架 m v c是一种设计模式,它强制性地把应用程序的输入、处理和输出分开。 mv c把应用程序分成三个核心模块:模型、视图和控制器,它们分别担负不同 的任务。图2 . 1 显示了 这几个模块各自的功能以及它们的相互关系。 - - - - - - - - - - - - - - - -闷 卜 方法调用 事件 图2 . 1 mv c设计模式 ( 1 )视图 ( y e w )是用户看到并与之交互的界面。视图向用户显示相关的 数据, 并能接受用户的输入数据,但是它并不能进行任何实际的业务处理。视 图可以 访问模型的数据,但不能改变模型中的数据。视图还能接受模型发出的 第二章mv c设计模式和 s t r u t s 框架技术 数据更新事件,从而对用户界面进行同步更新。一个模型可以有多个视图,而 一个视图理论上也可以与不同的模型关联起来。 ( 2 ) 模型 ( mo d e l )指的是真正完成任务的代码,包含应用系统的核心功 能,表示一个应用系统的数据,并且包含访问、维护和管理这些数据的逻辑。 所有属于应用系统持久状态的数据都应该保存在模型的 对象里,模型提供的服 务必须足够适用于不同的终端。一个模型聚集了相关的数据和操作,以提供一 个详细的服务,这些被封装在操作中的抽象事物的功能被模块化。一个模型的 接口 提供了 访问和更新模型状态、执行封装在模型中的复杂进程的方法。模型 服务被控制器访问,用于查询和更改模型的状态。当模型状态发生变化时,模 型会通报给视图。在模型同界面分离的情况下,代码就可以实现可管理性和可 重用性。模型通常也被称作业务逻辑。 ( 3 ) 控制器 ( c o n t r o l l e r ) 封装的是外界作用于模型的 操作, 控制器接收用 户的输入并调用模型和视图完成用户的请求,在模型和视图之间起到了沟通的 作用。当w e b 用户单击页面中的提交按钮发送 h t ml 表单时,控制器接受请求 并调用相应的模型组件处理请求,然后调用相应的视图 显 示模型返回的数据13 1 2 .2 .2 mv c的处理过程 m v c的处理过程为:首先控制器接收用户的请求,并决定应该调用哪个模 型来进行处理,然后模型根据用户请求进行相应的业务逻辑处理, 并返回数据: 最后控制器调用相应的视图格式化模型返回的数据,并通过视图呈现给用户。 2 .2 3 mv c模式的优点 使用mv c设计模式开发应用可以带来很多的好处, 其优点主要表现在以下 几 个 方 面 1 p o j o是普通的 基于j a v a b e a n 形式的 实体域对 象. c m p 和o r m相比 , 前者有以下不足: ( 1 )开发人员开发的实体bean必须遵守复杂的】 2 e e规范,而多 数o r m 框架不强迫域对象必须满足特定的规范。 第三章 j a v a 对象的持久化与持久层的设计 ( 2 ) 实体b e a n 只能运行在ij b容器中, 而p o j o可以 运行在任何一种j a v a 环境中。 ( 3 )目 前,对于复杂的域模型, e i b提供的对象一关系映射很有限。相比 之下,许多o r m框架提供了完善的对象一关系映射服务。 ( 4 ) 尽管按照j 2 e e的规范,e j b应该是一种可移植的组件,实际上却受 到很大限制。因为不同厂商生产的,a 1 , 引擎差异很大, 它们使用的对象一关系 映射元数据各不相同, 使得e j b不能顺利地从一个e i b容器移植到另一个e j b 容器中。使用o r m框架就不存在这样的问题,以h i b e m a t e 为例,它可以无缝 集成到 任何一个j a v a 系 统中 1 1 7 ) 3 a 3 j d o技术 j d o是s u n公司制定的描述对象持久化语义的标准a p i .严格地说,j d o 并不是对象一关系映射接口,因为它支持把对象持久化到任意一种存储系统中, 包括关系数据库、 面向 对象的数据库、 基于x ml的数据库以 及其他专有存储系 统。由于关系数据库是目 前流行的存储系统,许多j d o的实现都包含了对象一 关系的映射服务。 j d o的诞生给 j a v a数据持久化带来了很多新特性,特别是 它弥补了 e j b对面向对象编程的先天不足,提供了完全的面向对象支持, 包括 引用、集合、继承、多态等,并且无需容器支持。但是 j d o有以下缺点: ( 1 ) j d o没有一个好的开源免费实现, 好的产品都是商业产品, 并且在国 内没有销售和技术支持。 这就造成了 j d o只有学习之用, 不能把它用在实际项 目中。 ( 2 ) j d o产品的分裂。这个问题也比较严重,由于 j d o l 0标准的缺陷, j d 0 2 .0标准还遥遥无期,而各个 】 d o厂商为了能够在竞争中脱颖而出,那么 除了在易操作性和性能上的提高之外,想要吸引客户,就必须有自己的产品特 色。而j d o l 0 标准的缺陷正好给了他们发挥的舞台,每个厂商都会有自己独到 的解决方案来解决标准的缺陷,然而这却造成了 j d o产品事实上的分裂。 ( 3 ) 缺乏旧的支持。 目前, 没有任何主要的关系数据库管理系统( r d b ms ) 供应商支持 j d o 。因此, 开发人员必须将系统数据迁移到支持 j d o的供应商, 或者将j d o只用于 其功能不 依赖旧r d b m s数据存储的 新项目 或组 件 a , 第四章i -l b e r n a t e 技术 第四章h i b e r n a t e 技术 目 前在持久层领域,已经出现了许多优秀的o r m框架,有的是商业性的, 有的是开放源代码的。 h i b e r n a t e 就是一种越来越受欢迎的开放源代码的o r m框 架。h i b e r n a t e提供了强大、高性能的对象到关系数据库的持久化服务。利用 h i b e r n a t e ,开发人员可以按照j a v a 的基础语义进行持久层开发。 4 . 1 h i b e r n a t e 概述 h i b e r n a t e是一个面向j a v a 环境的对象/ 关系数据库映射工具。 h i b e rna t e不 仅仅管理 j a v a类到数据库表的映射, 还提供数据查询和获取数据的方法, 相对 于使用j d b c和s q l 来手工操作数据库, 使用h i b e r n a t e 可以大大减少操作数据 库的工作量。 h ib e rn a t e 对j d b c进行了非常轻量级的对象封装,使得j a v a 程序员可以随 心所欲的使用对象编程思维来操纵数据库。h i b e rn a t e可以应用在任何使用 j i 的场合,既可以在 j a v a的客户端程序中使用,也可以在基于 s e r v l e ws p 的we b 应用中使用,还可以在应用e j b的j 2 e e架构中取代c mp , 完成数据持 久化的重任。 h i b e r n a t e的精做是持久层实现模式。它是完全针对对象的持久化,即把一 个普通的 j a v a对象映射到关系数据库中。 面向对象设计中的继承与多态机制在 h ib e r n a t e里也得到了 支持. 在数据查询中, h ib e r n a t 。 支持动态 q u e r y ,并提供 对十六种数据库语言的支持。它沿用传统数据库的事务模型,使程序员不必为 新的事务模型 大伤脑筋。 另外, h i b e rn a t e 是 本地调用,比e n t i ty b e a n 有更高的 性能,而且它改进的速度之快也是其他o r m产品无法企及的。 4 . 2 h i b e r n a t e 体系结构 4 . 2 . 1 h i b e r n a t e 总体结构 从整个应用程序的高度看,h i b e rn a t e处于数据库与应用程序之间,为应用 程序提供将对象持久化到数据库的服务。 图4 . 1 是h i b e r n a t e 一个高层次的概览, 第四章h i b e rn a t e 技术 它展示了h i b e rn a t e 使用数据库和配置文件来为应用程序提供持久化服务,其中 h i b e r n a t 使用 b e r n a t e .p r o p e rt i .和x m l m a p p i n g 两 类配置文件把普通j a v a 对 象映射成关系数据库中的表1 1 9 1 p e r s i u t o b j e c t s h月 肠叮朋 扭 盗 丝山 盔 到 图4 . 1 h ib e rn a t e 概览 4 . 2 . 2 h i b e r n a t e 的编程接口 应用程序可以直接通过h i b e r n a t e a p i 访问数据库。图4 .2 描述了 在应用层和持久 层中的一些重要的接口 类侧: 加. . . 日肠肺 i _ r - i叫 卜 匕一 一 - ,拭1 c b c i is . ,-巴 一_ 1 . . wel 一_ _ _ 一 一 i 乞 一!笼三三三巴 巨 u . 叮 月 阵 f e r s i s t w r x t a p es 图4 . 2 hi b e rna t e a p i 在图4 .2 中, h i b e r n a t e 的编程接口 大致可以分为以 下几类: ( 1 )提供访问数据库的 c r u d操作的接口,这些接口包括:s e s s i o n . 第四章h i b e ma t e 技术 t r a n s a c t i o n 和q u e r y 接口 。 ( 2 ) 用来配置h i b e r n a t . 的 接口 : 。,以1 叨接口 . ( 3 ) 回调 ( c a l l b a c k ) 接口 。 使应用程序接受h i b e rn a t e 内 部发生的事件, 并 作出 相关的回应。 这些接口 包括i n t e r c e p t o r . l i f e c y c l e 和v a li d a t a b l e 接口。 ( 4 ) 用于扩展h i b e r n a t e 功能的 接口, 如u s e r t y p e . c o m p o s i t e u s e r 印 p e 和 i d e n t i fi e r g e n e r a t o r 。如果需要的话,应用程序可以扩展这些接口。 在h i b e r n a t 。 持久层接口中, 有五个核心的接口被用在每一个h i b e rn a t e 应用 程序中,用这些接口可以存取检索持久对象,控制事务。下面做一个简要的介 绍。 .s e s s i o n 接口 s e s s i o n接口是 h i b e rn a t e 应用中使用最广泛的接口。 s e s s i o n也被称为持久 化管理器,它提供了和持久化对象相关的操作,如添加、更新、删除、加载和 查询对象。在 h i b e rn a t e 中,实例化的 s e s s io n是一个轻量级的类,创建和销毁 它都不会占用很多资源。这在实际项目中很重要,因为在客户程序中,可能会 不断地创建以 及销毁 s e s s io n 对象,如果s e s s i o n的开销太大,会给系统带来不 良 影响。但值得注意的是,s e s s i o n对象是非线程安全的,因此在设计中,最好 是一个线程只创建一个s e s s i o n 对象。h i b e rn a t e 的s e s s i o n 不同于j s p 应用中的 h tt p s e s s i o n 。 当 我们使用s e s s io n 这个术语时, 我们指的是h ib e r n a t e 中的s e s s i o n , 而将h tt p s e s i o n 对象 称为 用户s e s s i o n . .s e s s i o n f a c t o ry接口 一 个s e s s i o n f a c to ry实 例 对 应一 个数 据存 储源, 应 用 从s e s s i o n f a c t o ry中 获 得s e s s i o n 实 例。 s e s s i o n f a c t o ry并 不是 轻量 级的, 这意 味 着不 能随 意 创建 或销毁 它的实例。实际上它的设计者的意图是让它能在整个应用中共享。典型地来说, 一个项目 通常只需要一个s e s s i o n f a c t o rn, 就够了, 但是当 项目 要操作多 个数据 库 时, 那就必须为 每个数据库指定一个s e s s i o n f a c to ry . s e s s i o n f a c t o ry在h i b e r n a t e 中实际起到了一个缓冲区的作用,它缓冲了h i b e r n a t e自 动生成的 s q l语句和 一些其它的映射数据,还缓冲了一些将来有可能重复利用的数据。 .c o n fi g u r a t i o n接口 c o n fi g u r a t i o n对象用于配置并且根启动 h i b e r n a t e . h i b e rn a t e应用通过 c o n fi g u r a t i o n 实 例来 指定 对 象一 关 系映 射文 件的 位置 或 者 动 态配置h i b e rn * 的 属性,然后创建s e s s io n f a c t o ry实例。 第四章 i -i b e ru a t e 技术 .t r a n s a ct i o n 接口 t r a n s a ct i o 。 接口 是h i b e r n a t 。 的数据库事务接口,它对底层的事务接口 做了 封装。川b e r n a t 。 应用可通过一致的t r a n s a c ti o n 接口来声明事务边界,这有助于 应用在不同的环境或容器中移植。尽管应用也可以绕过 t r a n s a c t i o n接口, 直接 访问底层的事务接口,但是这种方法不值得推荐,因为它不利于应用在不同的 环境中移植。 .q u e ry和c r i t e ri a 接口 q u e ry和c ri t e r i a 接口 是h i b e r n a t e 的查 询接口 , 用于向 数 据库查询对象,以 及控 制执行查 询的 过 程. q u e ry实 例包装了 一个h q l ( h i b e rn a t e q u e ry l a n g u a g e ) 查询语句。 h q l查询语句与s q l查询语句有些相似,但h q l 查询语句是面向 对象的, 它引用类名及类的属性名, 而不是表名及表的字段名。c ri t e r i a 接口完 全封 装了 基于字符串 形式的查询语句,比q u e ry接口 更加面向 对象, c ri t e ri a 接 口搜长于执行动态查询。 h i b e r n a t 。 内 部封 装了j d b c . j t a ( j a v a t r a n s a ct i o n a p i ) 和j n d i ( j a v a n a m i n g a n d d i r e c to ry i n t e r f a c e ) . j d b c 提供底层的数据访问 操作, 只要用户提供了 相应 的j d b c驱动程序, h i b e r n a t e 就可以访问任何一个数据库系统。 j n d i和j t a使 h i b e r n a t e 能够和j 2 e e应用服务器集成四。 4 3 h i b e r n a t e 基本应用步软 在j a v a 应用中使用h i b e r n a t e 包含以下步骤: ( 1 )创建h i b e r n a t e 的配置文件。 ( 2 ) 创建持久化类。 ( 3 ) 创建对象一关系映射文件。 ( 4 ) 通过e l iffi e r n a t e 冉 夕 1 编写访问 数据库的 代码. 4 . 3 . 1 h i b e ma t e 配1 h i b e r n a t e 配置文件主要用于配置数据库连接和h i b e r n a t 。 运行时所需的各种 属 性。 h i b e rn a t e 同 时 支 持x m l 格式的 配 置 文 件 和传统的 . p ro p e rt i e s 文 件 配 置 方 式,建议采用 x m l配置文件。x m l配置文件提供了更易读的结构和更强的配 置能 力, 可以 直接 对映射文件加以 配置并由h i b e rn a t e 自 动加 载。 而在. p r o p e r t i e s 文件中则无法做到这点,开发人员必须在程序中通过编码进行映射文件的加载。 第四章技术 配置 文 件名 默认为“ iu b e m a t e .c f g .x m l ( 或 者lr i b e r n a t e .p ro p e rt i e s ) . h i b e rn a t e 初始化期间会自 动在 c l a s s p a t h 中寻找这个文件,并读取其中的配置信息, 为后期数据库操作做好准备。 4 . 3 . 2持久化类 持久化类是指其实例需要被h i b e rn a t e 持久化到数据库中的类。持久化类通 常都是域 模型中的实 体域类22 ) , 符 合j a v a b e a n 的 规范, 包含一些属性以 及与 之 对应的g e t x w 和s e t x x x 0 方法. h i b e rn a t e要求持久化类必须提供一个不带参数的默认构造方法, 在程序运 行时, h i b e rn a t e 运用j a v a 反 射机 制, 调 用j a v a . l a n g .r e fl e c t .c o n s t r u t o r n e w l n s t a n c e o 方法来构造持久化类的实例。 4 . 3 3对象一关系映射 对象一关系映射技术是 h i b e rn a t e中最为关键的组成部分,h i b e rn a t e采用 x ml 格式的文件来指定对象和关系数据之间的映射。 接下来简要介绍h i b e rn a t e 中对象一关系映射技术的实现策略。 4 . 3 3 . 1 映射o e d j a v a语言按内存地址来标识或区别同一个类的不同对象,而关系数据库按 主键值来标识或区别同一个表的不同记录。h i b e r n a t e使用对象标识符 ( o id. o b j e c t i d e n t i fi e r ) 来统一两者之间的 矛 盾, o id是关系数据库中的主 键 ( 通常为 代理主 键) 在j a v a 对象模型中的等价物12 3 1 。 在运行时, h i b e rn a t e 根据0 11 ) 来维 持】 a v a 对象和数据库表中记录的对应关系。 i d 节点定义如下: 岁. . 协 r c l a s s = g e n e r a t o r c e a s s / . . , 。 对于每一种集 合接口 , h i b e r n a t e 都提供了内置的实现类, 当s e s s i o n 从数据库中加载j a v a 集合时, 则创建内置集 合类的实例。 3 ) 属性本身也是一个类 h i b e rna t e把持久化类的属性分为两种:值类型和实体类型。两种类型之间 最重要的区别在于前者没有 o i d ,不能被单独持久化,它的生命周期依赖于所 属的持久化类的对象的生命周期;而实体类型有o j d ,可以 被单独持久化。 如果属性类是 值类型, 在映 射文件中 使用 c o m p o n e n t 元素来映 射属性, 表 明该属性是持久化类的一个组成部分:如果是实体类型,即为关联关系的映射, 下面会有介绍。 4 . 3 3 3继承映射 类与类之间的继承关系是关系型数据与面向对象数据结构之间的主要差异 之一。如何在关系数据库中实现类的继承是对象一关系映射设计中的一个关键 问 题。 h i b e r n a t e 提供了 三种不同 的继承映射方法【2 4 l d 每个具体的类映射为一个表 这是 最简单的 映 射方式。 一个类的 所有属 性, 包括从超类s u p e r c l a s s 继承过 来的 属性, 都一一映 射为数据库表的 列。 即 超类s u p e r c l a s s 映 射为一个表, 子类 s u b c l a s s 映射为 单独的 表, 在数据库中, 它们
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024四川蓬溪文旅投资开发有限公司副总经理和工作人员4人笔试参考题库附带答案详解
- 九年级道德与法治上册 第一单元 我们真的长大了 第三课 伸出你的手 第1框 在关爱中成长教学设计 人民版
- 全国电子工业版初中信息技术第四册第1单元1.4活动3《预测高温时盆栽的用水量》教学设计
- 五年级上册道德与法治教学设计-13《探访古代文明》(第二课时) 人教部编版(五四制)
- 人教版数学六年级下第二单元 第5课时 解决问题教案
- 初中物理北师大版八年级上册三 学生实验:探究物质的一种属性-密度教案
- 七年级道德与法治上册 第四单元 生命的思考 第十课 绽放生命之花 第一框 感受生命的意义教学设计 新人教版
- 工程项目管理培训
- 七年级地理上册 1.3地图教学设计3 (新版)新人教版
- 2024云南广南供销集团有限公司招聘2人笔试参考题库附带答案详解
- 籍贯对照表完整版
- AGC 系统安全事故应急处置程序
- 变位齿轮与变位齿轮传动
- 二级精神病医院评价细则
- TGIA 004-2020 垃圾填埋场地下水污染防治技术指南
- GB/T 148-1997印刷、书写和绘图纸幅面尺寸
- 《思想道德与法治》 课件 第三章 弘扬中国精神
- 人教版小学数学四年级下册平均数教学教材课件
- (更新版)中国移动政企行业认证题库大全-上(单选题汇总-共3部分-1)
- 中国古钱币课件5(宋元明清)
- 2022年小升初入学考试数学真题重庆市巴川中学初一新生入学水平测试
评论
0/150
提交评论