(计算机应用技术专业论文)net快速应用开发框架数据持久层的一种实现模型.pdf_第1页
(计算机应用技术专业论文)net快速应用开发框架数据持久层的一种实现模型.pdf_第2页
(计算机应用技术专业论文)net快速应用开发框架数据持久层的一种实现模型.pdf_第3页
(计算机应用技术专业论文)net快速应用开发框架数据持久层的一种实现模型.pdf_第4页
(计算机应用技术专业论文)net快速应用开发框架数据持久层的一种实现模型.pdf_第5页
已阅读5页,还剩78页未读 继续免费阅读

(计算机应用技术专业论文)net快速应用开发框架数据持久层的一种实现模型.pdf.pdf 免费下载

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

文档简介

摘要 摘要 信息时代中,信息是发展的第一要素,网络的发展让信息的共享成为可能。 而信息共享的实质是数据的共享。数据是信息资源最直接的表现形式。这样,为 了实现资源的真正共享,在每一个计算机应用程序中,数据不仅必须是可访问的( 即 与用户界面连接并按一系列业务规则管理) ,而且还必须是可持久的。所以,对于 与数据息息相关的系统来说,如何构造一个数据持久层具有重大价值。 本文结合所开发的“n p e a i 一新一代企业应用系统构建平台 的数据持久层问 题,分别讨论了面向对象操作数据库的d a o 模式,支持d o t n e t 平台的数据持久层 框架n h i b e m a t e ,以及同样支持d o t n e t 平台的半自动化数据持久层框架i b a t i s n e t 。 然后在此基础上分别提出泛型d a o 模式,h q l m a p p i n g 技术以及i b a t i s n e t 返回 数据集,最后结合这三种新技术作为数据持久层的一种新的实现模型,应用到具 体的项目“n p e a i 一新一代企业应用系统构建平台中。 在泛型d a o 模式中,首先针对已经存在的d a o 模式的原理和实现进行了介 绍,然后结合d o t n e t 自身支持的类型安全的泛型,研究了新型泛型d a o 的实现模 式,接着介绍了泛型d a o 的实现原理,然后,将泛型d a o 模式运用到本系统中, 最后还针对泛型做了性能测试。在h q l m a p p i n g 技术中,首先介绍了支持d o t n e t 的数据持久层框架n h i b e m a t e ,然后分析讨论了n h i b e m a t e 在管理自身查询语句 h q l 语句的不足,基于x m l 技术提出可以动态构造h q l 语句并能集中管理h q l 语句的h q l m a p p i n g 技术,介绍了h q l m a p p i n g 技术的实现原理,最后给出了 h q l m a p p i n g 的具体实现。最后,i b a t i s n e t 返回数据集是针对n h i b e m a t e 对于复 杂查询提出的。首先分析了复杂查询的常用行,然后通过实验证明了在复杂查询 中,i b a t i s n e t 的性能优于n h i b e m a t e ,最后对于复杂查询在i b a t i s n e t 原有基础上, 提出i b a t i s n e t 返回数据集,不仅保证了复杂查询的性能,同样能与d o t n e t 自身提 供的控件直接进行绑定,方便展示数据。 最后,本文基于上述三种新技术,将其应用到“n p e a i 一新一代企业应用系统 构建平台 。在逻辑层上,本系统采用了s 研n g n e t 框架,该框架有效的组织了系 统中的中间层对象,消除了组件对象创建与使用耦合紧密的问题,使作者更容易 专注于数据持久层的研究。在数据持久层上,采用了本文提出的新的数据持久层 的访问模型展示了新技术的实际应用性。 摘要 关键词:数据持久层,n h i b e m a t e ,i b a t i s n e t ,d a o ,泛型。 a b s t r a c t a b s t r a c t h li n f o r m a t i o na g e , i n f o r m a t i o ni st h em o s ti m p o r t a n tf a c t o rf o rd e v e l o p m e n ti n e v e r ya r e a i ti sp o s s i b l et os h a r ei n f o r m a t i o na m o n gd i f f e r e n to r g a n i z a t i o n s 丽mt h e i m p r o v e m e n t o fn e t w o r k i nf a c t ,w h a ts h a r e di ni n f o r m a t i o ni sb a s i c a ld a t a d a t ai st h e v e r yd i r e c tr e p r e s e n t a t i o no fi n f o r m a t i o nr e s o u r c e s s o ,i no r d e rt or e a l i z ed a t a - s h a r i n g , d a t as h o u l dn o to n l yb ev i s i t e d ( t h a ti st ob ec o n n e c t e dw i mu ia n dt ob em a n a g e d f o l l o w i n gas e r i e so fp r i n c i p l e s ) b u ta l s ob ep e r s i s t e d a sar e s u l t , w i t hr e g a r dt ot h e s y s t e m sc o n n e c t e dw i t hd a t a , t h ed e s i g no fd a t ap e r s i s t e n c eb e c o m e sq u i t ei m p o r t a n t i nt h i st h e s i s ,b e c a u s eo fd o i n gt h ep r o j e c t “i n f o r m a t i o nm a n a g e m e n tp l a t f o r mf o r c h e n g d us e c o n db u i l d i n gr e i n f o r c i n gs t e e lb a ra n di n s t i t u t eo fe l e c t r o n i cs c i e n c ea n d t e c h n o l o g y w h i c ht h ea u t h o rp a r t i c i p a t e ds u b j e c t ,f i r s t l yt h ed a om o d ew h i c hu s e dt o a c c e s sd a t a b a s ei no b j e c to r i e n t e dp r o g r a m m i n gi si n t r o d u c e da n ds e c o n d l yt h ed a t a p e r s i s t e n c ef r a m e w o r kn h i b e m a t ew h i c hc a ns u p p o r tt h ed o t n e tp l a t f o r mi si n t r o d u c e d , t h i r d l yt h ed a t ap e r s i s t e n c ef r a m e w o r ki b a t i s n e tw h i c ha l s os u p p o r tt h ed o t n e t p l a t f o r mi si n t r o d u c e d a n dt h e nb a s eo nt h et h e o r ya b o v e ,t h i st h e s i sa d v a n c e s i m p r o v e dd a om o d ew i t hg e n e r i c ,h q l m a p p i n gt e c h n o l o g ya n du s i n gi b a t i s n e t r e t u md a t a s e t a tl a s t ,t h et h r e ek i n do fn e w t e c h n o l o g yi sc o m b i n e da san e wm o d e lf o r d a t ap e r s i s t e n c e ,a n dt h e nu s et h i sn e wm o d et ot h er e a l a p p l i c a t i o n “i n f o r m a t i o n m a n a g e m e n tp l a t f o r mf o rc h e n g d us e c o n db u i l d i n gr e i n f o r c i n gs t e e lb a ra n di n s t i t u t eo f e l e c t r o n i cs c i e n c ea n dt e c h n o l o g y a b o u tt h ed a om o d ew i t l lg e n e r i c f i r s t l yi n t r o d u c e st h et h e o r ya n di m p l e m e n to f t h ee x i s t e dd a o ,a n dt h e nc o m b i n i n gw i t ht h e n e tg e n e t i cw h i c hi st y p es e c u r i t yt h i s p a p e rd e v e l o p sa ni m p r o v e dd a o m o d e 、) l ,i m n e tg e n e r i c ,t h i r d l yi n t r o d u c e st h e t h e o r yo ft h ed a o m o d ew i t h n e tg e n e r i ca n dt h ei m p l e m e n to fi t ,b e s i d eg i v e sa n e x a m p l ef o r t h ed a o m o d ew i t h n e tg e n e r i c i nt h ef o u r t hc h a p t e r , f i r s t l yi n t r o d u c e s t h ed a t ap e r s i s t e n c ef r a m e w o r kn h i b e r n a t e ,a n dt h e na n a l y z e sa n dd i s c u s s e st h e p r o b l e ma b o u tt h eh q lm a n a g e m e n to fn h i b e r n a t e ,s e c o n d l yb a s eo nt h ex m l t e c h n o l o g y , t h ea u t h o rg i v e san e wm e t h o dh q l m a p p i n gw h i c hc a nd y n a m i c a l l y c o n s t r u c tt h eh q ls t a t e m e n t sa n dc e n t r a l i z e dm a n a g et h e m ,t h i r d l yi n t r o d u c e s t h e a b s t r a c t t h e o r yo ft h eh q l m a p p i n ga n dh o wt oi m p l e m e n tt h eh q l m a p p i n gi n t h er e a l a p p l i c a t i o n i nt h et h i r dc h a p t e r , a i m i n ga tt h ec o m p l e xs e l e c t i n gs i t u a t i o n ,g i v e st h e i b a t i s n e tf r a m e w o r ka n dr e t u r n d a t a s e t f i r s t l ya n a l y z e s t h ec o m p l e xs e l e c t i n g , s e c o n d l y , b yd o i n ge x p e r i m e n tf o rc o m p a r i n gt h ec a p a c i t yo fi b a t i s n e ta n dn h i b e r n a t e i nc o m p l e xs e l e c t i n gp r o v e st h a ti b a t i s n e ti sb e t t e rt h a nn h i b e r n a t e ,t h i r d l yb a s e so n i b a t i s n e t , g i v e su s i n gi b a t i s n e tr e t u r nd a t a s e tw h i c hn o to n l yi m p r o v e st h ec a p a c i t yo f d a t a b a s ea c c e s s i n gb u ta l s om a k ei te a s yt oc o m b i n ew i t hc o m p o n e n tt h a td o t n e t s u p p o r ti t s e l a tl a s t ,i nt h i st h e s i s ,b a s i n g0 1 1t h et h r e ek i l l do fn e wt e c h n o l o g i e sa b o v e ,u s et h i s n e wd a t ap e r s i s t e n c em o d et ot h ep r o j e c t i n f o r m a t i o nm a n a g e m e n tp l a t f o r mf o r c h e n g d us e c o n db u i l d i n gr e i n f o r c i n gs t e e lb a ra n di n s t i t u t eo f e l e c t r o n i cs c i e n c ea n d t e c h n o l o g y i nt h el o g i c a ll a y e r , t h i ss y s t e ms e l e c ts p r i n g n e ta si t sf r a m e w o r k ,w h i c h e f f e c t i v e l yo r g a n i z e dt h em i d d l ew a r eo b j e c t ,g e tr i do ft h ep r o b l e mo ft h et i g h t c o n n e c t i o no fc o m p o n e n tc o n s t r u c t i o na n de m p l o y m e n ta n dt h en e e do fu s i n gv a r i o u s p r o p e r t yf i l e s i nt h ew h o l ea p p l i c a t i o np r o j e c t s ,s p r i n g n e tf r a m e w o r kp r o v i d e sa u n i f o r mm e t h o dc o n f i g u r a t i o n s i nt h ed a t ap e r s i s t e n c el a y e r , t h es y s t e mu s e st h en e w m o d ea sm e n t i o n e da b o v ea n ds h o w st h ec o n v e n i e n c eo ft h en e wd a t ap e r s i s t e n c em o d e i na p p l i c a t i o n k e y w o r d :d a t ap e r s i s t e n c e , n h i b e r n a t e ,i b a t i s n e t ,d a o ,g e n e r i c 图索弓 图索引 2 1s 谢n g n e t 框架图5 3 1 系统架构图1 3 3 - 2 业务逻辑层架构图1 4 3 3 业务逻辑层架构图1 5 3 - 4t r a n s a c t i o n 封装对像15 3 5n h i b e m a t e 业务操作对像的定义1 6 3 - 6 声明性事务的配置1 6 3 7 配置数据库d b h e l p e r 16 3 8 业务逻辑类的定义1 6 3 - 9 加入数据持久层后的系统架构1 9 3 1 0 泛型d a o 接口和类的继承关系图1 9 4 1 数据访问对象类图2 4 4 - 2d a o 模式的实现层次。2 5 4 3 经典d a o 模式u m l 类图2 6 4 4 使用d a o 代理类图2 7 4 5 抽象d a o 代理类图2 8 4 6 泛型d a o 接口一3 0 4 7 第一个泛型d a o 实现3 0 4 8 配置d a o 的v 几文件3l 4 9 使用d a o 3l 4 1 0 泛型d a o 接口和类的继承关系图3 2 4 1 1 ) a o 接口3 2 4 12i d a o 接口中的d e l e t e 方法3 3 4 13i h i b e m a t e g e n e r i c s e a r c h a b l e 接口3 3 4 1 4i h i b e r n a t e s e a r c h a b l e 接口3 4 4 - 15s q l h i b e m a t e d a o s u p p o r t 类图3 5 4 1 6s q l h e l p e r 类图3 5 4 1 7l a r g ec l a s s 和l a r g es t m c t 代码3 7 4 1 8 一般的测试脚本3 7 5 1n h i b e m a t e 体系结构图4 1 5 2n h i b e r n a t e 轻型体系结构图4 l 5 3n h i b e m a t e 全面体系结构图4 2 5 _ 4h q l 语法4 4 5 5 表格模型) ( 也示例4 7 5 6 模型驱动模型x m l 示例4 8 5 7 模型驱动模型x m l 处理后示例4 8 5 8h q l m a p p i n g 流程图4 9 5 9t a b l e x m l 51 5 1 0n d i g e s t e r 解析x m l 。5 3 5 1 1 构造带查询参数的h a s h t a b l e 5 4 5 1 2 自定义排序构造带查询参数5 4 图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图 图索引 图5 1 3 自定义分组构造带查询参数5 5 图5 1 4h q l m a p p i n g p a g g i n g m a n a g e r 类定义图5 5 图5 1 5 查询所有数据5 6 图5 1 6 查询分页数据5 6 图6 1n h i b e m a t e 测试脚本6 l 图6 - 2i b a t i s n e t 测试脚本一6 2 图6 3s q l 测试脚本6 3 图6 _ 4 返回d a t a t a b l e 一6 5 图6 5 返l 目d l a :t a s e t 6 6 图6 - 6 利用反射返回d a t a s e t 6 7 表索引 表索引 表4 - 1 泛型性能测试结果表。3 8 表6 - 1 性能结果表7 6 3 主要术语表 主要术语表 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他入已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:z 型 日期:年月日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:差丝壁 导师签名 日期:年月 日 第一章绪论 1 1 课题背景及意义 第一章绪论 软件技术发展到今天,软件规模不断扩大,复杂度日渐升级;开发人员面临 的问题也越来越多,解决方案也百花齐放。设计者或者开发人员如何将新的设计 或者开发建立在以往工作的基础上,复用以往成功的案例。因此,人们越来越意 识到软件重用技术的重要性【2 】,设计模式和框架应运而生。开源软件的兴起,使得 框架更是层出不穷p 1 。 在当今的企业环境中,开发企业应用程序是一个相当繁琐、浪费时间的过程, 为了让这个过程变得相对简单且高效,一些开源的、轻量级的框架正在被广泛的 使用,比如j a v a 下的s t r u t s 、s p r i n g 、h i b e r n a t e 、i b a t i s 以及n e t 下的s p r i n g n e t 和n h i b e m a t e 等。 这总多框架的精髓就是把业务逻辑层和数据访问层相分离,降低了耦合性【4 】, 使开发人员集中到某个领域。它们的广泛使用降低了系统开发的复杂度,弱化了 系统各模块间的耦合程度,缩短了开发周期,增强了系统的可维护性和可扩展性。 本文对n e t 软件开发平台的设想如下,采用开源的o r m 框架做数据持久层, a s p n e t 的w e b f o r m 组件作为界面层,数据持久层同w e b 表现层之间的连接采 用i o c 容器。 衡量了多种框架以后,最终本文推荐采用的平台是n e t 开发平台,技术架构 就是s p r i n g n e t + n h i b e r n a t e + i b a t i s n e t + a s p n e t 。 但是随着n h i b e m a t e 的进一步普及和发展【5 】,基于网络的数据处理日益成为 企业信息化的中心环节。数据库的灵活性、安全性和可拓展性成为数据处理技术 的焦点。尤其是采用分层结构后,数据持久层的优化更是关键的关键。面临着众 多o r m 自动化框架,如何合理利用以达到数据库访问的最佳效果以及提高程序员 的工作效率是本文讨论的重点。本文在已有的o r m 数据库持久层的框架基础之 上,采用n e t 平台的具有类型安全的泛型技术,提出一种新的数据库持久层实现 模型。即从设计上采用泛型d a o 模式,提高代码重用率,数据库访问在n h i b e r n a t e 框架基础之上,提出h q l m a p p i n g 技术管理h q l 语言以达到对n h i b e r n a t e 的改进, 同时对于大量数据查询中使用i b a t i s n e t 返回数据集方式,提高查询性能。以达到 电子科技大学硕士学位论文 在利用数据库已有框架基础之上,最大提高了数据性能。 1 2 国内外发展现状 对于任何一个系统的开发来说,对数据和过程的开发都是不可缺少的基本要 素。其中的数据时静态的部分,过程是动态的部分。目前对于数据的持久化多采 用的是文件系统,关系数据库存储机制以及刚刚发展起来的对象数据库存储机制。 对于过程的处理则采用高级语言来进行。随着面向对象思想的提出,数据与过程 都被封装到“对象”当中,两者被细粒度的耦合在了一起,这样的“对象 无疑 能够解决数据持久的问题。但同时也就需要一种新的技术来解决其持久化。 目前,用的较多的数据持久机制主要有三种,文件系统、关系数据库、对象 数据库。其中用的最多的应该是关系数据库存储机制。关系数据库是目前发展的 最为成熟的一种持久化机制。 当前两大主流开发平台是j 2 e e 和n e t ,j 2 e e 平台下已经出现几种数据持久框 架,有的已经商业化,而本文使用的正是在j a v a 数据持久层框架h i b e r n a t e 基础 上发展起来的开源n e t 数据持久层的框架n h i b e r n a t e 。下面简单介绍j 2 e e 平台下 比较成熟的数据持久层框架,以借鉴它们的思想。 1 实体e j b e j b 是一种创建在服务端的可扩展、事务处理的、多用户安全的企业级应用。 它为开发分布式的n 一层中间件提供了统一的组件结构框架。e j b 并不是一个软 件产品,它是一个规范,一个j a v a 服务器端服务框架的规范。不同软件厂商的e j b 服务器都是根据它来实现的。e j b 规范明确了e j b 容器必须的实现的服务,如事 务管理,安全管理和名字服务等以保证任何一个e n t e r p r i s eb e a n 都能使用某个必需 的服务。但规范并没有说明厂商如何实现这些服务。实体b e a n 是持久存储的业务 实体的对象视图,提供了对数据的访问和操作的对象封装,支持多用户共享数据。 实体b e a n 是持久的,可以从数据库中存储的属性重新实例化,与数据库中的数据 有一样长的生命期,在e j b 服务器崩溃后仍可重构。最常用的是用实体b e a n 代表 关系库中的数据。一个简单的实体b e a n 可以定义成代表数据库表的一个记录,也 就是每一个实例代表一个特殊的记录。更复杂的实体b e a n 可以代表数据库表间关 联视图。实体b e a n 根据持久性的解决分为两种:b e a n 管理的持久性( b m p ) 和 容器管理的持久性( c ) 。自管理的持久性由开发者来进行完全的控制,无需复 杂的提供商支持;但编码复杂,并且在改变时需要重新编码和部署,影响可移植 2 第一章绪论 性。c m p 实体b e a n 能够构建健壮的持久性,b e a n 容器处理大部分的数据完整性、 资源管理和并发性功能,开发人员只需关注业务逻辑和数据处理,而不是这些低 级细节。e j b 虽然减轻了应用开发人员的负担,但其本身也存在许多不足之处。首 先,e j b 是依赖于e j b 容器的,脱离的容器,e j b 无法使用;其次,编写实体b e a n 的规范并不简单,由于屏蔽了许多内层实现,使得e j b 的调试复杂;最后,实体 b e a n 的效率并不理想。 2 m o j d o ( j a v a 数据对象) 是一个已被j c p 组织定义为j s r l2 的j a v a 对象存储的规 范。j d 0 1 0 版本规范在2 0 0 0 年6 月6 日提交并在2 0 0 2 年4 月3 0 日正式发布。j d o 主要目标之一是,向开发人员提供一种透明的机制,不考虑底层数据存储方式处 理和操作持久信息。从一开始,它就被设计成让开发人员逃避开发持久性基础设 施的苦差事。因为开发人员使用的通用a p i 可以跨越不同的数据存储进行互操作, 开发团队就可以延迟决定特定项目将使用或支持什么样的数据存储方式。这些好 处都减少了编码的工作量,使开发人员能够关注项目的其他相关领域。j d o 不是 一个轻量级封装,它试图建立一个完整的持久层框架,但是还很不完善,造成了 j d o 比较笨,很多操作方式令人觉得烦琐和古怪。这加重了程序员学习和编程的 负担,而且封装得太多除会导致性能方面的问题之外,还会造成调试非常困难, 无法准确地定位错误位置。 3 h i b e r n a t e h i b e r n a t e 是一个面向j a v a 环境的对象关系数据库映射( o b j e c t r e l a t i o n a l m a p p i n go r m ) 工具。对象关系数据库映射用来把对象模型表示的对象映射到基 于s q l 的关系模型结构中去。h i b e r n a t e 使用数据库和配置文件数据来为应用程序 提供持久化服务和持久化的对象。 h i b e r n a t e 对j d b c 进行了轻量级的对象封装,使j a v a 程序员可以方便地使用 对象编程思维来操纵数据库。h i b e r n a t e 的目标是简化开发者通常的数据持久化编 程任务,它可以把对象模型表示的对象映射到关系型数据库中,同时提供了数据 查询和获取的方法,以大幅大减少开发时人工使用s q l 和j d b c 处理数据的时间。 h i b e r n a t e 是j a v a 开源项目,用户可以在需要的时候对源代码进行改写,对其 部分功能进行定制和拓展。同时,h i b e r n a t e 具有一支积极活跃的开发队伍,这使 其产品有稳定的发展保障。 3 电子科技大学硕士学位论文 1 3 课题来源 课题来源于信息产业部信息产业生产发展基金“n p e 触一新一代企业应用系 统构建平台 以及电子科技大学青年博士平台基金。作者主要的工作是参与设计 开发整个项目尤其是数据持久层的研究设计开发。 1 4 论文组织 本论文其余部分组织如下: 第二章n e t 快速应用开发框架以及数据持久层的介绍。 第三章主要介绍了整个系统的框架设计以及分别介绍了业务逻辑层和数据持 久层的设计。 第四章讨论了已有的d a o 模式及局限性,在基础上提出泛型d a o 模式的原 理并在系统中实现。 第五章讨论了数据持久层框架n h i b e m a t e ,在此基础上h q l m a p p i n g 技术管 理h q l 语句并在系统中实现。 第六章研究n h i b e r n a t e 和1 b a t i s n e t 在多表级联的复杂查询中的性能问题,在 i b a t i s n e t 的基础上,提出i b a t i s n e t 返回数据集并在系统中实现。 第七章课题总结 1 5 本章小结 本章简要描述了撰写本文的动机以及论文的总体组织。 4 第二章n e t 快速应用开发框架 第二章n e t 快速应用开发框架 本章主要介绍本系统在研究开发中使用的主要技术。 2 1 s p r i n g n e t 框架 s p r i n g n e t 是一个关注于n e t 企业应用开发的应用程序框架【6 】。它能够提供宽 广范围的功能,例如依赖注入( 1 0 c ) 、数据访问抽象,以及a s e n e t 7 1 集成等。 基于j a v a 的s p r i n g 框架的核心概念和价值已被应用到n e t 。s p r i n g n e t 包含一个 完全功能的依赖注入容器和a o p 库,对a s p n e t 、r e m o t i n g 和数据访问的支持。 图2 1 展现出了s p r i n g n e t 的各个模块。 碡h d e p e n d e n c y 蜘e e t i o nf o r a s p n e tw e bs e r v i c e s m a s t e zp a g e s , b i d i r e c t i o n a ld a t ab m d m g , l o c a l i z a t i o n 图2 - is p r i n g n e t 框架图 s p r i n g c o r e 库是框架的基础【引,提供依赖注入功能。s p r i n g 。n e t 中大多数类库 依赖或扩展了s p r i n g c o r e 的功能。i o b j e c t f a c t o r y 接口提供了一个简单而优雅的工 厂模式,移除了对单例和一些服务定位s t u b 写程序的必要。允许你将真正的程序 5 电子科技大学硕士学位论文 逻辑的配置和依赖的详细情况解耦。作为对i o b j e c t f a c t o r y 的扩展, i a p p l i c a t i o n c o n t e x t 接口也在s p r i n g c o r e 库中,并且添加了许多企业应用为中心的 功能,例如利用资源文件进行文本本地化、事件传播、资源加载等等。 s p r i n g a o p 库提供对业务对象的面向方面编程( a o p ) 的支持【9 】os p r i n g a o p 库是对s p r i n g c o r e 库的补充,可为声明性地建立企业应用和为业务对象提供服务 提供坚实的基础。 s r 畦n g w r e b 库扩展了a s f n e t 1 0 1 ,添加了一些功能,如对a s e n e t 页面的依 赖注入,双向数据绑定,针对a s e n e t1 1 的m a s t e rp a g e s 1 l 】以及改进的本地化支 持。 s p r i n g s e r v i c e s 库可让你将任何“一般”对象( 即没有从其他特殊的服务基类继 承的对象) 暴露为企业服务或远程对象,使得n e tw e bs e r v i c 鹤【1 2 】获得依赖注入的 支持,并覆盖属性元数据。此外还提供了对w i n d o w ss e r v i c e 1 3 】的集成。 s p r i n g d a t a 库提供了数据访问层的抽象,可以被多个数据访问提供者( 从 a d o n e t 到多个o r m 提供者) 应用。它还包含一个对a d o n e t 的抽象层,移 除了为a d o n e t 1 4 】编写可怕的编码和声明性的事务管理的必要。 s 研n g o r m 库提供了对常见对象关系映射库的的集成,提供了一些功能,比 如对声明性事务管理的支持。 简单的说,s p r i n g n e t 就是一个轻量级的应用i o c 模式和支持a o p 的应用开 发框架。 s p r i n g n e t 提供的是一种管理业务对象的方法,它关注的领域是其他许多流行 的框架未曾关注的。s p r i n g n e t 既是全面的又是模块化的。s p r i n g n e t 有分层的体系 结构,这意味着程序开发人员能选择仅仅使用它任何一个独立的部分,而它的架 构又是内部一致【1 5 】。例如,你可能选择仅仅使用s p r i n g n e t 来简单化a d o n e t 的 使用,或用来管理所有的业务对象。它的设计从一开始就是要帮助你编写易于测 试的代码。因此s p r i n g n e t 是使用测试驱动开发的工程的理想框架。 s p r i n g n e t 不会给工程添加对其他的框架依赖。s p r i n g n e t 也许称得上是个一站 式解决方案,提供了一个典型应用所需要的大部分基础架构。它还涉及到了其他 框架没有考虑到的内容。 s p n n g n e t 能有效地组织中间层对象,不管开发人员是否选择使用了其他框架。 如果仅仅使用了其它为特制的框架,s p n n g n e t 致力于解决剩下的问题。它通过把 传统编程过程中对类编程的概念转变为对接口编程从而提高了编程的效率,同时 也能够促进养成好的编程习惯。 6 第二章n e t 快速应用开发框架 s p n n g n o t 被设计为让使用它创建的应用尽可能少的依赖于他的a p i 。在 s p r i n g n e t 应用中的大多数业务对象没有依赖于s p r i n g n o t 。使用s p r i n g n e t 构建的 应用程序易于单元测试。所有以上的优势使得s p r i n g n e t 框架逐渐成为n e t 领域 里面一个亮点。 s p r i n g n e t 框架的一个亮点就是i o c 容器。i o c ( i n v e r s i o no f c o n t r 0 1 ) ,简单的 讲就是由容器来控制程序之间的关系。而传统的实现中,由程序代码直接操控。 这也就是所谓“控制反转 的概念所在控制权由应用代码中转移到了外部容器, 控制权的转移,即所谓反转。i o c 模式不是一个新的概念,在g f o 的2 3 个设计模 式中的t e m p l a t em e t h o d 模式中就有所体现。j a v a 社群掀起的轻量级容器热潮背 后的共同设计模式习惯上被大家泛称为“i o c 模式 ,但是m a t i nf o w l e r 在深入探 索该模式的工作原理后,后来为其正名为“依赖注射( d e p e n d e n c yi n j e c t i o n ) e 1 6 】 。 出于传统上的使用习惯,不再对i o c 和依赖注射进行区分,本文所指的i o c 设计 模式即依赖注射。i o c 将接口的具体实现实例化过程转移,不再采用硬编码,改 由i o c 容器来实例化,i o c 容器读取配置文件,再通过反射来实例化接口的具体 实现,达到调用者和被调用者解耦目的,与工厂模式相比解耦更彻底。 2 2 泛型介绍 泛型是c 群2 0 的最强大的功能。通过泛型可以定义类型安全的数据结构,而 无须使用实际的数据类型。这能够显著提高性能并得到更高质量的代码,因为您 可以重用数据处理算法,而无须复制类型特定的代码。 泛型可以定义类型安全类,而不会损害类型安全、性能或工作效率【1 刀。您只 须一次性地将服务器实现为一般服务器,同时可以用任何类型来声明和使用它。 简而言之,泛型程序设计方法是一种把算法从特定数据类型中剥离抽取的方 法。 2 2 1 泛型程序设计及它的历史 什么是泛型程序设计呢? 援引c h 创始人n a m es t r o u s t r u p 的话,泛型程序设 计就是:d e c i d ew h i c ha l g o r i t h m sy o uw a n tp a r a m e t e r i z et h e ms ot h a tt h e yw o r kf o ra v a r i e t yo f s u i t a b l et y p e sa n dd a t as t r u c t u r e s 。这就是说,确定你需要哪些算法;将它们 参数化,使它们能够对各种各样适当的类型和数据结构工作。当然,这句话并没 有完全概括泛型

温馨提示

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

评论

0/150

提交评论