




已阅读5页,还剩54页未读, 继续免费阅读
(计算机软件与理论专业论文)统一认证授权平台的构建.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 统一认证授权平台的构建 作者简介:李勇,男,1 9 7 5 年1 1 月出生,2 0 0 5 年从师于成都理工大学揭金良教授, 2 0 0 8 年6 月毕业于成都理工大学计算机软件与理论专业。 摘要 针对基于w e b 应用开发和部署的应用系统来说,认证和授权是每一个系统的 基础构件,但是各种类型的w e b 应用系统在安全体系的构建方法上都具有很强的 共性。对于一个具有多重应用系统的组织机构来说,可以构建一个和各业务应用 系统耦合度较小的统一认证授权控制平台,实现统一的安全认证、资源的授权。 本文正是基于此目的而提出构建与各应用系统无关的统一认证和授权的思 想,即在j 2 e e 框架中,以s p r i n g 的m v c 模式下,结合h i b e r n a t e 的持久层映射 框架,以及l d a p 良好的目录层级存储结构,开发出一个统一认证授权平台,通 过平台的构建,实现在各个系统中的统一的用户管理,并且统一代替各应用系统 的认证和授权,这样可以使认证授权应用与具体业务应用逻辑应用分开,也降低 了各应用系统的开发成本和复杂度,大大提高了整个系统的安全保护度。 基于以上思想和理论,本文重点讨论了j 2 e e 框架s p r i n gm v c 模式以及 h i b e r n a t e 持久层框架技术,以及相关的认证授权理论,最后结合统一认证授权平 台的实现,对其相应的应用技术进行了分析 关键词:统一认证授权;单点登录;l d a p ;数据同步 成都理工大学硕士学位论文 d e s i g n e du n i f i e da u t h e n t i c a t i o na n da u t h o r 娩a t i o n p l a t f o r m i 船o d u c t i o no fa u t h o r :l i y o n g ,m a l e ,b o mi nn o v e m b e r19 7 5 u n d e rt h eg u i d a l l c eo f p r o f j i ej i n l i 锄g ,h e 、v 嬲g r a d u a t e d 舶mc h e n g d uu n i v e r s 时o ft e c l l i l o i o g yi nc o m p u t e r s o f h v a r e 肌dt h e o 巧m 萄o r 锄dw a sg r a n t e dt h em a s t e rd e g r e ei nj u n e ,2 0 0 8 a b s t r a c t f o rw e b - b a s e da p p l i c a t i o nd e v e l o p m e n ta n dd e p l o y m e n to f a p p l i c a t i o n s , a m h e n t i c a t i o na i l da 咄o r i z a t i o ns y s t e mi st h eb a s i so fe a c hc o m p o n e m ,b u ta l lt y p e s o fw e ba p p l i c a t i o n si nt h es e c u r i t ) ,s y s t e mc o n s t n j c t i o nm e m o d sh a v ea 鳓r o n g c o m m o n f o ram u l t i - a p p l i c a t i o ns y s t e mo fo 玛砌z a t i o n s ,c a nb u i l dab u s i n e s s a p p l i c a t i o ns y s t e m sa 1 1 dm ec o u p l i n go ft 1 1 eu i l i t ) ,o fs m a l l e rc e r t i f i c a t i o na u t l l o r i 够 c o n t r o lp l a t f o 肌,t l l er e u i l i f i c a t i o no ft l l e s e c u r i t ) ra u t h e n t i c a t i o n ,a u t h o r i z a t i o no f r e s o u r c e s 1 1 1 i sa r t i c l ei sb a s e do nt 1 1 ep u r p o s eo ft m sp r o p o s a lo fb u i l d i n ga s y s t e mh a sn o t h i n gt od ow i t ht h ea p p l i c a t i o no ft h eu 芏1 i f i e da u t h e n t i c a t i o na n d a m h o r i z a t i o no ft 1 1 ei d e at h a tt h ej 2 e e 缸姒1 1 e w o r k ,t ot h es p r i n gm v cm o d e l ,谢m h i b e m a t em 印p i n g 行a m e w o r ko fa1 a s t i n ga 1 1 d9 0 0 dl d a pd i r e c t o r yl e v e ls t o r a g e s 仃i 】c t u r e ,a n dd e v e l o p e dau n i f i e dp l a t f o r mc e r t i f i c a t i o na u t h o r i t y ,t l l l o u g h t l l e p l a t f o mo ft h eb u i l d i n g ,a n di nv a r i o u ss y s t e m si nau m f i e du s e rm a n a g e m e n t ,a i l d u 1 1 i f o 肌a p p l i c a t i o no ft h es y s t e mt or e p l a c et h ea u t l l e n t i c a t i o na i l da u t h o r i z a t i o n , w 1 1 i c hw o u l de m b l e 硼t h e n t i c a t i o na n da u t l l o r i z a t i o no fs p e c i f i cb u s i n e s sa p p l i c a t i o n s s e p a r a t e 印p l i c a t i o nl o g i c ,a l s or e d u c e dt t l e 印p l i c a t i o ns y s t e md e v e l o p m e n tc o s t s a n dc o r n p l e x i 够,g r e a t l yi m p r o v i n gt h eo v e r a l ls y s t e mo fs e c u r i t yp r o t e c t i o n b a s e do nt 1 1 ea b o v ei d e a sa 1 1 dt h e o r i e s ,t h ep 印e rf o c u s e do nm ej 2 e e 仔a i i l e w o r ks p r i n gm :v ch i b e m a t em o d ea n dd u r a b l em l m e 、v o r ko ft 1 1 et e c h n o l o g y , a n dt 1 1 er e l e v a n tc e n i f i c a t i o na u t h o r i t ) rt h e o r y ,谢t ht l l ef i n a lc e n i f i c a t i o na m h o r i 够 u n i f i e dp l a t f o mf o rt l l er e a l i z a t i o no ft h e i rc o r r e s p o n d i n g 印p l i c a t i o n sw e r ea n a l y z e d k 叼唧o r d s :u n i f i e da u t h e m i c a t i o n 锄da u t h o r i z a l i o n ;s i n g l es i g n o n ;l d a p ;d a t a s y n c l l l o i l i z a t i o n i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其 他人已经发表或撰写过的研究成果,也不包含为获得盛壑堡王态堂或其他教 育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何 贡献均己在论文中作了明确的说明并表示谢意。 学位论文版权使用授权书 本学位论文作者完全了解盛壑堡王太堂有关保留、使用学位论文的规定, 有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和 借阅。本人授权盛壑堡王太堂可以将学位论文的全部或部分内容编入有关数 据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名: 李彦 朋年名月加日 多八9 c 铆螽乡招李 名签 : 师名导签者者作作文文论论位位 学学 第l 章引言 1 1 研究背景和意义 第1 章引言 在当今信息化社会,国家、机构、组织,企业之间的生产、消费和信息交流, 都离不开计算机网络和信息系统,不同的企业和组织为了加强管理及时获取信 息,纷纷建立了各种计算机信息系统以满足日益激烈的市场竞争的需要。而在 信息系统中,首要解决的就是用户身份的认证,以及控制用户对资源的访问, 不同的系统往往都构建有自己的认证授权等方面的控制,但对于一个具有多重 应用系统的组织机构来说,重复建设无疑是巨大的资源浪费! 基于此。可以在 这些业务应用系统的基础上。构建一个和各业务应用系统耦合度较小的统一认 证授权控制平台。实现统一的安全认证、资源的授权。无疑是一个很有价值的 开发尝试。 1 2 国内外研究现状 目前在国际上,已经有一些比较成熟的通用认证授权管理平台及相关的安 全产品,国内在近些年也有巨大的发展,国家9 7 3 计划里也把实现跨域跨机构、 可移植、可信任和可扩展的认证授权与审计平台作为一个重点基础研究发展规 划项目。国内一些行业如电信、金融等行业也有相应研究发展,一些高等院校 也进行相应的研究。在统一认证授权平台中,认证技术目前已经成熟,但如何 在多应用系统中建立一个合理的用户授权策略,实现按权限访问资源,还有待 研究与发展。 1 3本文研究的主要目标 对于一个与应用系统无关的统一认证授权平台,应该实现如下功能目标: 1 3 1统一用户管理 以用户i d 为主体进行管理,多个应用系统的用户管理只有一个管理入口, 而一个管理入口背后有一个核心用户数据源支持;在理想情况下,所有应用系 统的访问主体皆为统一认证授权管理下的用户;应用系统不保留任何主体信息, 只保留应用数据。在需要相关信息时,从认证授权平台读取。 成都理工大学硕士学位论文 1 3 2 统一认证 各应用系统只有一个权威的认证中心来进行应用系统访问主体的鉴别;在 统一用户管理的基础上,对用户身份进行确认。 1 3 3 统一访问控制 各应用系统只有一个权威的访问控制中心来进行权限的分配和鉴别;在统 一用户管理、统一认证的基础上,对用户访问的资源进行控制;统一认证授权 平台以角色为基本单位进行管理,使角色与用户之间建立关联,这样角色是独 立于系统存在,可以跨系统实现管理 1 3 4实现单点登录功能 用户可以具有多种角色,当用户登录系统之后,可以按照用户角色所授予 的权限访问相应的资源和应用系统,在访问各不同的资源和系统时,不必再重 复进行认证、授权。 1 4研究内容 本课题重点研究统一认证、授权管理平台中的统一访问控制策略模型,实 现按权限访问相关资源,最终实现平台的统一用户管理,统一认证、统一访问 控制、实现单点登录功能。 为了实现本课题重点目标,主要研究以下内容: 1 ) 研究j 2 e e 相关理论。 2 ) l d a p ( l i g h tw e i g h td i r e c t o r ya c c e s sp r o t o c 0 1 ) 目录服务理 论。 3 ) 相关认证授权技术及理论 1 5研究技术路线 研究技术路线流程框图如图卜1 所示。 2 第1 章引言 图1 1 研究技术路线流程框图 3 成都理工大学硕士学位论文 2 1s p rin g 概述 2 1 1 s p rin g 框架 第2 章j 2 匪框架概述 s p 咖g o r m l s p n gw e b h i b e m a t e lw e b a p p l j c a t i o n c o 哟b x t s p 窀w e b 框架。1 i b a t l sl m u l t i p 勰解析器 s p r i n ga o p j d o w e b 实用类 代码级元数据 w e b 视图。l a o p 框架 s p r i 嘴上下文j s p j s l = l ,v e i o c 坶,f rl f 瓣r a s 仃u c l l f e ) s p r i n gd a 0 a 谢i c a i o n c o n 姆戳 事务框架 u 1 支持 嬲c 、d a o 支持 v 缸i 由t i 嗷 j n d l 、e j b 、j k 俗 s p r i n g 核心 支持类 ; b 既砰a 呦删o c 容器;, 图2 1s p ri n g 框架图 ( 1 ) s p r i n g 核心是框架的最基本部分,提供依赖注入( d e p e n d c yi n j e c t i o n ) 特性来管理b e a n ( 2 ) s p r i n gc o n t e x t 上下文,通过在x m l 文件中进行配置,可以对应用上 下文用到的资源b e a n 以及消息传递b e a n 进行定义和配置,从而不必在业务逻辑 代码中声明,也方便资源与消息在应用上下文中的传递。 ( 3 ) s p r i n gd a o 提供了j d b c 抽象层,它可消除冗长的j d b c 编码,并提供 声明性事务管理,实现特定功能的接口类,并管理p o j o ( p l a i no r d i n a r yj a v a o b j e c t ) ( 4 ) s p r i n go r m 实现关系一对象的映象提供集成层,包括 j d 0 ,h i b e r n a t e ,i b a t i s 等,通过o r m 可以实现对象到关系表的映射,从而使访 问数据从以前的二维表访问转换到以对象为层面的数据访问模式。 ( 5 ) s p r i n ga o p 提供面向方面的编程,如设置拦截器和切点,实现不同层 次代码的功能分离,简化编程,使编程人员可以专注于逻辑业务的实现。 ( 6 ) s p r i n g 的w e b 包提供了基本的面向w e b 的综合特性,可以实现如应用 上下文的初始化。 ( 7 ) s p r i n gm v c ( m o d e l v i e w c o n t r 0 1 1 e r ) 框架理论,使现行的工程项目开 发层次分明,其控制层,表现层和逻辑实现相互独立,任何一层发生改变,对其 他层次的影响都比较小,这样便于项目的移植和扩展n 3 。 4 第2 章j 2 e e 框架概述 2 1 2 反向控制( io c ) 依赖注入 ( 1 ) i o c ,就是由容器控制程序之间的关系,在传统程序之间的关系控制中, 一般是由程序代码直接操控,逻辑定义和关系相对比较复杂,而i o c 使程序之间 的控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。 ( 2 ) 依赖注入,即对象之间的依赖关系由容器在运行期决定,即由容器动态 的将某种依赖关系注入到组件之中。它是i o c 的另是形象的说法。 ( 3 ) 如对于d a 0 ( d a t aa c c e s so b j e c t ) 中的一些引用对象的配置,传统编程由 编码实现,比较麻烦,而通过i o c 将由容器在运行期动态注入,而引用的对象的 具体配置和初始化工作也将由容器在运行期完成。 通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可引用 某一对象中所需的对象实例。引用对象只需利用容器注入的对象实例,完成自身 的业务逻辑,而不用关心具体的资源来自何处、由谁实现。 ( 4 ) 依赖注入方式 通过接口注入,如c 1 a s s a 依赖于i n t e r f a c e b 的实现。为了将调用者与实现 者在编译期分离,根据预先在配置文件中设定的实现类的类名,动态加载实现类, 并通过i n t e r f a c e b 强制转型后为c l a s s a 所用雎1 。对于接口注入型1 0 c 容器而言, 加载接口实现并创建其实例的工作由容器完成。 设值注入,即通过类的s e t t e r 方法完成对象间依赖关系的设置。 构造子注入,即通过构造函数完成对象间依赖关系的设定,依赖关系是通过 类构造函数建立,容器通过调用类的构造方法,将其所需的依赖关系注入其中。 2 1 3b e a n f a c t o r y 幂口a p pi ic a tio n c o n t e t ( 1 )b e a n f a c t o r y b e a n f a c t o r y 是实例化,配置和管理众多b e a n 的容器,这些b e a n 之间彼此 合作,也可能彼此依赖。b e a n f a c t o r y 可以用接口表示,也可以从其几个实现类 进行表示,常见的实现类为:) ( i i l l b e a n f a c t o r y 和a p p l i c a t i o n c o n t e x t 类。 在许多情况下,b e a n f a c t o r y 不需要实例化,它一般是通过s p r i n g 框架进 行实现。一个基本的b e a n f a c t o r y 配置由一个或多个管理的b e a n 构成,组成一 个b e a n s 组,在常见的) ( i i l l b e a n f a c t o r y 配置文件中,可以见到一个根节点b e a n s 下面由众多的b e a n 元素构成。 在定义一个b e a n 时,通常在配置文件中只需设置c l a s s , i d ( n a m e ) ,s i n 9 1 e t o n p r o t o t y p e ,构造函数参数,b e a n 的属性等内容,就可以定 义好一个b e a n 在定义中,可以指定c 1 a s s ,或者通过静态工厂方法,或者通过另 一定义的b e a n 实例的工厂方法来创建b e a n 成都理工大学硕士学位论文 ( 2 )a p p lic a ti o n c o n t e x t a p p l i c a t i o n c o n t e x t ,它以一种面向框架的方式增强了b e a n f a c t o r y 的功 能,这样用户可以用声明的方式来使用应用上下文,一般在j 2 e e 的w e b 启动过程 中可以通过相应的x m l 配置文件加载a p p l i c a t i o n c o n t e x t ,实现b e a n 的加载和 实例化。 其中a p p l i c a t i o n c o n t e x t 可以实现以下功能。 事件传递。a p p l i c a t i o n c o n t e x t 中的事件处理是通过a p p l i c a t i o n e v e n t 和 a p p l i c a t i o n l i s t e n e r 接口提供的,当在上下文中部署了实现 a p p l i c a t i o n l i s t e n e r 接口的b e a n ,这样每次a p p l i c a t i o n e v e n t 发布消息时, 就会通过上下文传递到相应的b e a n ,实现事件的传递。 在s p r i n g 中使用资源。即通过在a p p l i c a t i o n c o n t e x t 接口中提供了一方法, 该方法通过指定的资源名获取一个r e s o u r c e 类中定义好的资源,从而实现对外 界资源的访问与获取。 2 1 4s p rin ga o p ( a s p e c t0 rie n t e dp r o g r a m min g ) 面向方面编程 ( 1 ) 切面( a s p e c t ) 切面,对象操作过程中的截面。例如在应用中访问数据库的事务操作,传统 o o p ( 面向对象编程) 需要在获取数据库连接时不停的捕获异常,这样使应用代 码和异常捕获代码之间混杂,影响了代码的可读性和可维护性,通过a o p 的上下 文设置,可以在) ( m l 文件中统一指定异常捕获类,从而简化代码编写量。通过切 面,我们可以将系统中各个不同层次上的问题隔离开来,实现统一处理。各切面 只需集中于自己领域内的逻辑实现。这一方面使得开发逻辑更加清晰,专业化分 工更加易于进行;另一方面,由于切面的隔离,降低了耦合性,从而可以在不同 的应用中将各个切面组合使用,从而使得代码可重用性大大增强。 ( 2 ) 连接点( j o i n p o i n t ) 程序运行过程中的某个阶段点,如某个方法调用,或者某个异常被抛出。 ( 3 ) 处理逻辑( a d v i c e ) 在某个连接点所采用的处理逻辑处理逻辑的调用模式通常有三种: a r o u n d 方式,在连接点前后插入预处理过程和后处理过程。 b e f o r e 方式,仅在连接点之前插入预处理过程。 t h r o w 方式,在连接点抛出异常时进行异常处理。 ( 4 ) 切点( p o i n t c u t ) 一系列连接点的集合,它指明处理方式( a d v i c e ) 将在何时被触发。 ( 5 ) a o pi ns p r i n g s p r i n g 中提供的内置a o p 支持,是基于动态a o p 机制实现,所谓动态a o p ,即 通过动态p r o x y 模式,在目标对象的方法调用前后插入相应的处理代码。 6 第2 章j 2 e e 框架概述 而s p r i n ga o p 中的动态p r o x y 模式,则是基于j a v ad y n a m i cp r o x y ( 面向 i n t e r f a c e ) 和c g l i b ( 面向c l a s s ) 实现。d y n 锄i cp r o x y 要求所代理的类必须是 某个接口的实现,否则无法为其构造相应的动态类。而对于没有实现任何接口的 类通过c g l 工b 实现a o p 机制。d y n 锄i cp r o x y 通过在运行期构建一个此接口的动态 实现类完成对目标对象的代理。而如果目标代理对象并未实现任何接口,在 s p r i n g 中,引入了c g l i b 作为无接口情况下的动态代理实现。 c g l i b 与d y n 锄icp r o x y 的代理机制基本类似,只是其动态生成的代理对象并 非某个接口的实现,而是针对目标类扩展的子类。换句话说,d y n a m icp r o x y 返 回的动态代理类,是目标类所实现的接口的另一个实现版本,它实现了对目标类 的代理。而c g l i b 返回的动态代理类,则是目标代理类的一个子类 2 1 5s p rin gm v c m v c 模式是”m o d e 卜v i e w c o n t r 0 1 1 e r ”的缩写,中文翻译为”模式一视图一控制 器”。m v c 应用程序总是由这三个部分组成。e v e n t ( 事件) 导致控制器改变模型或 视图,或者同时改变两者。只要控制器改变了模型的数据或者属性,所有依赖的 视图都会自动更新。只要控制器改变了视图,视图会从潜在的模型中获取数据来 刷新自己 3 | 。 ( 1 ) 视图( v i e w ) 代表用户交互界面,对于w e b 应用来说,可以概括为h t m l , j s p ,j s f 界面。一个应用可能有很多不同的视图,m v c 设计模式对于视图的处理 仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流 程的处理。业务流程的处理交予模型( m o d e l ) 处理。如一个数据查询页面,当从 页面输入查询条件,视图将把数据转送给模型( m o d e l ) ,再通过事件的触发,传 送数据到控制器,由控制器选择相应的流程处理数据,并返回数据。 ( 2 ) 模型( m o d e l ) :负责业务流程状态的处理以及业务规则的制定。模型 接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是m v c 最 主要的核心。在j 2 e e 中,通过一个简单的j a v a b e a n 就可以为视图和控制器之间 传送数据。 ( 3 ) 控制器( c o n t r 0 1 1 e r ) :接收用户请求,将模型与视图匹配在一起,共 同完成用户的请求。控制器只是一个分发器,它并不做任何的数据处理。只是根 据用户的请求,切换到相应的流程,由模型处理数据。例如,用户点击一个连接, 控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模 型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图, 一个视图可能对应多个模型。 ( 4 ) 模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。 当控制器改变了模型的数据,它将会将数据返回给视图,所有其它依赖于这些数 据的视图都将反映这些变化,导致显示的更新,m v c 三层之间关系如图2 2 所示。 7 成都理工大学硕士学位论文 方法 一事件 图2 2m v c 流程图 2 1 6 事务管理 对于j 2 e e 应用程序而言,事务的处理一般有两种模式: ( 1 ) 依赖特定事务资源的事务处理 这是应用开发中最常见的模式,即通过特定资源提供的事务机制进行事务管 理。如通过j d b c 、j t a 的r 0 1 l b a c k 、c o 咖i t 方法;h i b e r n a t et r a n s a c t i o n 的 r o l l b a c k 、c o 跚i t 方法等h 1 。 ( 2 ) 依赖容器的参数化事务管理 通过容器提供的参数化事务机制,实现事务的外部管理,容器管理的参数化 事务为程序开发提供了相当的灵活性,同时因为将事务委托给容器进行管理,应 用逻辑中无需再编写事务代码,大大节省了代码量,从而提高了编程效率。本质 上来讲,s p r i n g 的事务管理是基于动态a o p 的。s p r i n g 可以将任意j a v ac 1 a s s 纳 入事务管理,通过s p r i n g ,可简单的实现事务的可配置化。也就是说,我们可以 随意为某个类的某个方法指定事务管理机制。s ”i n g 事务管理并不依赖特定的事 务资源。s ”i n g 的事务管理支持j d b c 、j t a 等多种事务资源。 2 1 。7 持久层封装 s p r i n g 对j d b c 进行了良好的封装,通过提供相应的模板和辅助类,在相当程 度上降低了j d b c 操作的复杂性。并且得益于s p r i n g 良好的隔离设计,j d b c 封装类 库可以脱离s p r i n gc o n t e x t 独立使用。 8 第2 章j 2 e e 框架概述 2 2 持久层理论 2 2 1 持久层设计 持久层,也就是在系统层面上,专注于实现数据持久化的一个相对独立的领 域( d o m a i n ) 吲对于应用系统而言,数据持久功能是必不可少的功能部分,在 系统架构中,应该有一个独立的逻辑层面,专注于数据持久化逻辑的实现。如图 2 3 所示。 图2 3 持久层结构图 ( 1 ) 数据存储逻辑分离 通过对数据访问逻辑进行抽象,为上层结构提供抽象化的数据访问接口。 业务层无需关心具体的s e l e c t ,i n s e r t ,u p d a t e 操作,这样,一方面避免了、业 务代码中混杂j d b c 调用语句,使得业务逻辑实现更加清晰,另一方面,由于数 据访问接口与数据访问实现相分离,可以使开发人员的分工更加明确。某些精通 数据库操作技术的开发人员可以根据接口提供数据库访问的最优化实现,而精通 业务的开发人员则可以抛开数据层的繁琐细节,专注于业务逻辑编码。 ( 2 ) 数据访问底层实现的分离 d a o 模式通过将数据访问划分为抽象层和实现层,从而分离了数据使用和数 据访问的底层实现细节。这意味着业务层与数据访问的底层细节无关,因此,我 们可以在保持上层结构不变的情况下,通过切换底层实现来修改数据访问的具体 机制。例如,我们可以通过仅仅替换数据访问层实现,将我们的系统部署在不同 的数据库平台之上。 ( 3 ) 资源管理和调度的分离 在数据库操作中,资源的管理和调度是非常重要的。d a o 模式将数据访问逻 9 成都理工大学硕士学位论文 辑从业务逻辑中脱离开来在数据访问层实现统一的资源调度,通过数据库连接 池以及各种缓存机制的配合使用,可以在保持上层系统不变的情况下,大幅度提 升系统性能。 ( 4 ) 数据抽象 在直接基于j d b c 调用的代码中,程序员面对的数据是原始的r c c o r d s e t 数 据集,对于业务逻辑开发而言,一般要做许多繁重的代码编写,效率一般也比较 低。 d a 0 模式通过对底层数据的封装,为业务层提供一个面向对象的接口,使得 业务逻辑开发人员可以面向业务中的实体进行编码。通过引入d a o 模式,业务逻 辑更加清晰,且富于形象性和描述性,维护也便利。d a 0 模式实际上是两个模式 的组合,即d a t aa c c e e s s o r 模式和a c t i v ed o m a i no b j e c e t 模式,其中d a t a a c c e s s c o r 模式实现了数据访问和业务逻辑的分离,而a c t i v ed o m a i n0 b i o c t 实现了业务数据的对象化封装。 通过d a o 模式对各个数据对象进行封装,对业务层屏蔽了数据库访问的底层 实现,业务层仅包含与本领域相关的逻辑对象和算法从而简化了相应业务逻辑 代码编写量。 2 2 2 数据库连接机制 c o n n e c t i o np 0 0 1 ( 数据库连接池) 的基本原理是在内部对象池中维护一定数 量的数据库连接,并对外暴露数据库连接获取和返回方法。 外部使用者可通过g e t c o n n e c t i o n 方法获取连接使用完毕后再通过 r e l e a s e c o m a e c t i o n 方法将连接返回,注意此时连接并没有关闭,而是由连接池 管理器回收,并为下一次使用做好准备。数据库连接池技术带来下面的优势。 ( 1 ) 资源重用 由于数据库连接得以重用,避免了频繁创建、释放连接引起的大量性能开销。 在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性( 减少内存 碎片以及数据库临时进程线程的数量) 。 ( 2 ) 更快的系统响应速度 数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备 用,此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可 用连接,避免了数据库连接初始化和释放过程的时间开销从而缩减了系统整体 响应时间。 ( 3 ) 新的资源分配手段 对于多应用共享同一数据库的系统而言,可在应用层通过数据连接池的配置 实现某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源 ( 4 ) 统一的连接管理,避免数据库连接泄漏配置 1 0 第2 章j 2 e e 框架概述 2 2 3 持久层设计与0 r m 0 r m ( 0 b j e c t r e l a t i o n a lm a p p e r ) 即“对象一关系型数据映射组件 。0 r 其 中包含两个关键词0 b j e c t ( 对象) 和r a t i o n a l ( 关系型数据) 。在目前的应用系统 中,大多数情况下,我们都必须同时面对对象和关系型数据进行开发。 在业务逻辑层和表示层,我们将系统中的各业务实体进行面向对象的封装。 而另一方面,目前的数据库基本上都是关系型数据库,如何将面向对象的设计与 关系型数据库之间实现数据的访问和传递,传递的方法一般是编写复杂的数据访 问类,实现对关系型数据库的增删改查,这样复杂而不易于维护的j d b c 代码就 会充斥于编码之中,0 rm a p p e r 正好解决了这一问题。 2 2 4 持久层框架 在j a v a 发展的初级阶段,一般都是直接调用j d b c 访问数据库。随着近年来 设计思想和j a v a 技术本身的演化,出现了许多j d b c 的封装技术这些技术为我 们的数据库访问层实现提供了更多的选择,目前主流的几套j d b c 封装框架包括 h i b e r n a t e 、a p a c h co j b 、i b a t i s ,j d o 以及j 2 e e 框架中的c m p 等。这些框架以 优良的设计大大提高了数据库访问层的开发效率,并且通过对数据访问中各种资 源和数据的缓存调度,实现了更佳的性能。持久层框架有如下特点: ( 1 ) 减少代码编写量 以最初的访问数据库时,一般都要获取数据库连接、执行s q l 语句、关闭数 据库连接等,代码量重复比较大,而且数据访问代码和业务实现逻辑代码混杂在 一起,不易于维护。 持久层框架封装了数据库持久层的大多数技术细节,如事务管理,数据库连 接管理、s q l 生成等。通过持久层框架可以从j d b c 编码中解放出来,使开发人 员可以专注于业务逻辑的实现。 ( 2 ) 更加面向对象的设计 目前的持久层框架,大多都已经建立在面向对象的设计思想之上, 0 r m ( 0 b j e c tr a t i o n a lm a p p i n g ) 几乎是目前主流持久层框架的基本特性。 0 r m 为系统设计提供了更加自然的实现方式。我们可以通过o r m 将系统中的 d o m a i n0 b j e c t 自动映射到各个数据库表这样编码中只需关心0 b j e c t 的相关 属性而不必关注j d b cr e s u l t s e t 中繁琐的字段型数据。 ( 3 ) 更好的性能 持久层框架大多提供了优秀的性能优化机制,如内置的数据库连接池支 持p r e p a r e d s t a t e m e n t 缓存、数据缓存等。这些优化机制的综台使用大大提升 了系统性能。 ( 4 ) 更好的移植性 成都理工大学硕士学位论文 由于设计上的良好隔离,持久层框架提供了对不同数据库的良好支持基于 j a v a 的跨平台特性,应用系统可以在不同操作系统之间切换,而不必改动业务 实现代码,在移植时只需简单地修改其配置参数即可实现底层数据库的切换。 2 3hib e r n a t e 理论 2 3 1 概述 作为一个优秀的持久层框架实现,h i b e r n a t e 提供了强大、高性能的对象 到关系型数据库的持久化服务。利用h i b e r n a t e ,开发人员可以按照j a v a 的基 础语义( 包括关联、继承、多态、组合以及j a v a 的集合架构) 进行持久层开发。 h i b e r n a t e 提供的h q l ( h i b e r n a t eq u e r yl a n g u a g e ) 是面向对象的查询语言,它 在对象型数据和关系型数据库之间构建了一条快速、高效、便捷的沟通渠道。供 了对大多数主流数据库的良好支持提供了完善的数据关联、事务管理、缓存管 理、延迟加载机制实现,更加丰富和完善的数据库支持、实体属性的延迟加载、 对存储过程和自定义持久化实现的支持使得h i b e r n a t e 的灵活性和可拓展性进 一步增强哺1 。 2 3 2hib e r n a t e 基础语义 ( 1 )c o n f i g u r a t i o n c o n f i g u r a t i o n 类负责管理h i b e r n a t e 的配置信息h i b e r n a t e 运行时需要获 取些底层实现的基本信息,其中几个关键属性包括: 数据库u r l 。 数据库用户。 数据库用户密码。 数据库j d b c 驱动类( 在采用i d b c 数据库访问模式的情况下与j n d i 相区分) 。 数据库适配嚣( d i a l e c t ) 。用于对特定数据库提供支持,其中包含了针对特 定数据库特性的实现,如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 c f g 姗l 或 h i b e r n a t e p r o p e a i e s ) 中加以设定。 c o n f i g u r a t 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 实例创建之后,由于配置信息已经由h i b e r n a t e 绑定在返回的 s e s s i o n f a c t o r y 之中,因此一般情况下无需再对其进行操作。 ( 2 ) 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 负责创建s e s s i o n 实例。我们可以通过c o n f i g u a f i o n 实例 构建s e s s l o n f a c t o r y : c o n f i g u r a t i o n 实例会根据当前的数据库配置信息,构造s e s s i o n f a c t o r y 1 2 第2 章j 2 e e 框架概述 实例并返回。s e s s i o n f a c t o r y 一旦构造完毕,即被赋予特定的配置信息。也就 是说,之后c o n f i g 的任何变更将不会影响到已经创建的s e s s i o n f a c t o r y 实例 如果需要使用基于改动后的c o n f i g 实例的s e s s i o n f a c t o r y ,需要从c o n f i g 重 新构建一个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 实例, s e s s i o n f a c t o r y 中保存了对应当前数据库配置的所有映射关系同时也负责维 护当前的二级数据缓存和s t a t e m e n t p o o l 。 ( 3 )s e s s i o n s e s s i o n 是h i b e r n a t e 持久化操作的基础。h i b e r n a t es e s s i o n 相当于j d b c 的一个c o n n e c t i o n 流程。 s e s s i o n 作为贯穿h i b e r n a t e 的持久化管理器核心提供了众多持久化方法, 如s a v e 、u p d a t e 、d e l e t e 、s e l e c t 等,通过这些方法,即可透明地完成对象的 增删改查( c r u d ) 。 2 3 3 事务管理 事务是一个相互独立的逻辑处理单元,在一个事务中,包括多个操作。 ( 1 ) 事务特性 a t o m i c ( 原子性,这里的“原子 即代表事务中的各个操作不可分割) 。事务 中包含的操作被看作一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么 全部失败。 c o n s i s t e n c y ( 一致性) 。即只有合法的数据可以被写入数据库,如果数据有 任何异常,则事务应该将其回滚到最初状态。 i s o l a t i o n ( 隔离性) 。事务允许多个用户对同一个数据的并发访问而不破 坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相 互独立。严格的情况下,一个事务看到的数据要么是另外一个事务修改这些事务 之前的状态,要么是第二个事务已经修改完成的数据但是这个事务不能看到其 他事务正在修改的数据。 d u r a b i l i t y ( 持久性) 。事务结束后,事务处理的结果必须能够得到固化, 即保存在物理存储器上。 ( 2 ) 数据库管理事务隔离等级 事务隔离指的是,数据库通过某种机制在并行的多个事务之间进行分隔, 使每个事务在其执行过程中保持独立,如同当前只有此事务单独运行。之所以要 采取数据隔离,是因为在数据库操作过程中,会出现以下三种不确定的情况。 脏读取( d i r t yr e a d s ) 。即一个事务读取了另一个事务未提交的数据。 不可重复读取( n o n r e p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年新教材高中历史 第九单元 当代世界发展的特点与主要趋势 第23课 和平发展合作共赢的时代潮流(1)说课稿 新人教版必修《中外历史纲要(下)》
- 3.2 代数式的值说课稿-2025-2026学年初中数学华东师大版2012七年级上册-华东师大版2012
- 奇怪的花瓶黏土课件
- 福建成人高考考试题库及答案
- 民政局定制离婚协议书样本及权益保障指南
- 钢结构工程安全施工合同
- 消防安全检测与维保及消防系统改造升级合同
- 企业员工创新项目启动资金借款合同模板
- 担保人责任明确的带担保贷款合同
- 高新技术研发项目合同招标主管任职要求及职责
- 2025年江西省高考生物试卷真题(含标准答案及解析)
- 2025年辅警笔试题库行测及答案指导
- 运维7×24小时服务保障方案
- 单招临床医学试题及答案2025年版
- 2025年辽宁省中考语文真题卷含答案解析
- 2《归园田居》任务式公开课一等奖创新教案(表格式)统编版高中语文必修上册
- 银行文明礼仪课件
- 儿童抽动障碍的诊断与评估(2025年)解读课件
- 甘露醇治疗颅内压增高中国专家共识解读 4
- 美容院设备维护管理规章
- 敏捷企业组织结构与设计的案例研究
评论
0/150
提交评论