已阅读5页,还剩95页未读, 继续免费阅读
(计算机应用技术专业论文)基于j2ee平台的对象持久性研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 信息时代,网络诠释了资源共享的全部理念,触动了共享技术新的革命。 而资源共享其实就是数据的共享。数据就是信息资源的最直接表现形式。这样。 为了实现资源的真正共享,在每一个计算机应用程序中,数摆不仅必须是可访 问的( 即与用户界面连接并按系列业务规则管理) ,而且还必须是持久的。而 在s m a l l t a l k 所提出的”一切皆对象”理念盛行的今天,数据表现为对象的状态, 要求数据的可访问和持久也就上升为要求对蒙实例的可 方问和持久。在没有持 久化机制的系统中,一个对象的典型生命周期是被创建一被使用被删除。此时, 这个对象被称为暂态对象,它的生存期也就是暂态的生存期。而一旦系统支持 持久化,对象的生命周期在被创建和被使用之后,就可以通过持久化机制而延 续。这样的对象也就成了持久对象,它的生存期也就是持久的生存期了。一旦 实现了对象的持久,就势必出现访问方法不同的暂态对象空间和持久对象空间。 那么,能否在实现对象持久化的基础上把这两个对象空间统一起来,让开发人 员按同一表达式语法就能访问暂态对象和持久对象呢? 为此,本文对当前主流 的企! 【k 应用开发平台一- - j 2 e e 平台上先后出现的四种对象持久化机制进行了深 入的研究与探讨。 文章首先从系统开发方法的发展历程出发,简要描述了对象、对象持久性 的褶关概念以及现阶段所采用的对象持久存储技术。接着,文章就j 2 e e 平台上 先后出现的j a v a 对象序列化、实体b e a n 、”会话b e a n + j d b c ”以及“会话b e a n + j d o ”等四种对象持久化机制,进行了深入的研究与比较。并且还特别探讨论 证了把”会话b e a n + j d o ”对象持久机制运用于s t r u t s 框架的可行性,提出了一个 把”会话b e a n + j d o ”对象持久机制应用于s t r u t s 框架的多层体系结构模型。最后, 本着理论与实际相结合的思路,本文以厦门某监理公司w e b 管理信息系统的开 发为背景,介绍了利用j 2 e e 平台上最常用的”会话b e a n + j d b c ”持久化机制进 行系统开发的实现情况,展示了”会话b e a n + j d o ”对象持久机制应用于s t r u t s 框 架的多层体系结构模型针对实际应用的系统实现,验证了所提出的”会话b e a n + j d o ”对象持久机制应用于s t r u t s 框架的多层体系结构模型的可操作性。 关键词:对象持久性,j 2 e e ,对象序列化。实体b e a n ,j d b c ,j d o 。s t r u t s 框架 a b s t r a c t i ni n f o r m a t i o na g e ,t h en e t w o r ka n n o t a t e sa l lt h ei d e a so ft h er e s o u r c e s h a r i n g , a n dh a st o u c h e dt h er e v o l u t i o no ft h en e wt e c h n o l o g yo fs h a r i n g h o w e v e r , t h e r e s o u r c e - s h a r i n gi sa c t u a l l yt h es h a r i n go f t h ed a t at h ed a t aa r et h em o s td i r e c tf o r m o f e x p r e s s i o no ft h ei n f o r m a t i o nr e s o u r c e s i nt h i sw a y , i no r d e rt or e a l i z et h er e a l l y s h a r i n go fr e s o u r c e s ,i ne v e r yc o m p u t e ra p p l i c a t i o np r o g r a m ,t h ed a t am u s t b ev i s i t e d ( n a m e l yt h ed a t am u s tc o n n e c tw i t hu s e r si n t e r f a c ea n db em a n a g e da c c o r d i n gt oa s e r i e so fb u s i n e s sr u l e s ) a n da l s om u s tb el a s t i n g w i t ht h et h e o r y , n a m e l y ”a l la r e o b j e c t s ”p u tf o r w a r db ys m a l l t a l k ,b e i n gi nv o g u e ,t h ed a t a a r es h o w na st h eo b j e c t s s t a t e ,a n dt or e q u i r ed a t at ob ev i s i t e da n dt ob el a s t i n gh a sb e c o m et or e q u i r eo b j e c t s i n s t a n c et ob ev i s i t e da n dt ob e l a s t i n g i nt h es y s t e mb e i n gi nt h es h o r to ft h e p e r s i s t e n c em e c h a n i s m ,o n eo b j e c tm u s tb ee s t a b l i s h e d ,t h e nb eu s e d ,a n df i n a l l yb e d e l e t e d a tt h i sm o m e n t ,t h i so b j e c ti sk n o w na st h et e m p o r a r y o b j e c t ,i t sl i f ec y c l ei s a n t e m p o r a r yl i f ec y c l e a n do n c et h es y s t e ms u p p o n s t h ep e r s i s t e n c em e c h a n i s m ,t h e o b j e c t s s h o u l de x i s ta f t e rh a v eb e i n ge s t a b l i s h e da n du s e d t h u s ,s u c hao b j e c t b e c o m e st h ep e r s i s t e n to b j e c t ,a n di t sl i f ec y c l ei st ob ep e r s i s t e n t h o w e v e r ,w i t ht h e o b j e c tp e r s i s t e n c er e a l i z e d ,c e r t a i n l ys h o u l di t b et h a tt e m p o r a r yo b j e c ts p a c ea n d p e r s i s t e n to b j e c ts p a c ew h o s em e t h o di sd i f f e r e n ts h o u l da p p e a r a n dt h e nw h e t h e r c o u l du n i t et h e s et w o o b j e c t ss p a c eo n t h eb a s i so ft h ep e r s i s t e n c er e a l i z e dt oe n a b l e d e v e l o p e r st ov i s i t t e m p o r a r yo b j e c ta n dp e r s i s t e n to b j e c ta c c o r d i n gt ot h es a n l e e x p r e s s i o nf o r m u l ag r a m m a r o rn o t ? f o rt h i sp u r p o s e ,t h i st h e s i ss t u d y sa n dd i s c u s s e s t h ef o u rk i n d so f o b j e c tp e r s i s t e n c em e c h a n i s m b a s e do nj 2 e e p l a t f o r m f i r s t l y ,t h i s t h e s i ss e t so u tf r o mt h e d e v e l o p m e n t c o u r s eo ft h e s y s t e m d e v e l o p m e n tm e t h o d ,d e s c r i b e s r e l e v a n t c o n c e p t s o ft h e o b j e c t a n dt h e o b j e c t p e r s i s t e n c ea n dp r e s e n tp e r s i s t e n tm e m o r yt e c h n o l o g i e s a n dt h e nd i s c u s s e sa n d c o m p a r e st h ef o u rk i n d so fo b j e c tp e r s i s t e n c em e c h a n i s ms u c c e s s i v e l ya p p e a r e do n j 2 e ep l a t f o r m ,w h i c hi n c l u d et h ej a v ao b j e c t s e r i a l i z a t i o n ,t h ee n t i t yb e a n ,t h e ”s e s s i o nb e a n + j d b c ”a n dt h e ”s e s s i o nb e a n + j d 0 ”m o r e o v e rd i s c u s s e sa n dp r o v e s 1 l i tf e a s i b l et oa p p l yt h ej d ot ot h es t r u t sf r a m e a n dp u tf o r w a r dam u l t i l a y e rs y s t e m s t r u c t u r em o d e l f i n a l l y , t h i st h e s i sr e g a r d sd e v e l o p m e n to ft h ew e bm a n a g e m e n t i n f o r m a t i o ns y s t e mo fx i a m e ng a n g w a n c o n s u l t i n ga n ds u p e r v i s i n gc o m p a n y a st h e b a c k g r o u n d ,i n t r o d u c e s t h eu t i l i z a t i o no ft h e ”s e s s i o nb e a n + j d b c ”i nt h e d e v e l o p m e n t o ft h ew e bm a n a g e m e n ti n f o r m a t i o n s y s t e m ,s h o w st h ep r a c t i c a l a p p l i c a t i o no f t h em u l t i l a y e rs y s t e ms t r u c t u r em o d e lt oa p p l yt h ej d ot ot h es t r u t s f r a m e ,a n dp r o v e st h em o d e l sm a n e u v e r a b i l i t ya th i 曲a l t i t u d e so fc o m b i n a t i o no f t h e o r ya n dp r a c t i c e k e yw o r d s :o b j e c tp e r s i s t e n c e ,j 2 e e ,o b j e c ts e r i a l i z a t i o n ,e n t i t yb e a n ,j d b c ,j d o s t r u t sf r a m e 【 武汉理工大学硕士学位论文 第1 章绪论 1 1 课题研究背景及意义 伴随着计算机技术的飞速发展,尤其是网络技术的迅猛革新。当今社会已 进入信息时代。在信息时代,网络的普及触动了资源共享的新一轮浪潮。新的 共享技术雨后春笋般不断推陈出新。在计算机领域,资源共享其实更多强调的 是信息资源的共享。而数据则是信息资源的最直接表现形式。这样,为了实现 信息资源的真正共享,在每一个计算机应用程序中,数据不仅必须是可访问的 ( 即与用户界面连接并按一系列业务规则管理) ,而且还必须是持久的。当开发 人员采用传统的系统开发方法进行系统设计时,为了实现数据的持久,开发人 员在利用高级程序设计语言构建过程模型的同时,一般都会利用现有的数据存 储技术( 如关系数据库管理系统) 来构建数据模型。这样来,就往往会发生 过程模型和数据模型的不一致。而在面向对象方法大行其道的今天,数据和过 程已经被细粒度地封装成了一个个的对象,要求数据的可访问和持久也就上升 为要求对象实例的可访问和持久,而且数据模型和过程模型的单独构建也上升 为要求统一的对象模型的构建了。在没有持久化机制的系统中,一个对象的典 型生命周期是被创建,被使用被删除。此时,这个对象被称为暂态对象,它的 生存期也就是暂态的生存期。而一旦系统支持持久化,对象的生命周期在被创 建和被使用之后,就可以通过持久化机制而延续。这样的对象也就成了持久对 象,它的生存期也就是持久的生存期了。这就是所谓的对象持久性的内涵了。 而旦数据持久上升为对象持久,数据模型和过程模型的分开构建就上升为对 象模型的统构建。为了实现对象的持久和对象模型的统一构建,也就势必要 求发展出新的技术或者变相使用现有的数据持久技术。 此外,信息时代还非常强调分布式企业计算平台的使用。在这类平台上, 必须不惜任何代价保护数据( 即对象实例) ,并使其永远持续存在,即使面临网 络故障、内存泄漏和服务器崩溃等情况时,也是如此。 这样,研究对象持久性,尤其是研究基于分布式企业计算平台的对象持久 性及其实现对保障信息共享、实现信息资源的分布式处理就具有十分重要的现 武汉理工大学硕士学位论文 实意义。 1 2国内外发展动态 在系统玎发中,数据和过程都是不可或缺的基本要素。数据是其中的静态 因素,而过程则是动态的,是对数据的处理流程。在传统系统开发方法中,由 于过程与数据的分离,过程模型和数据模型的分开建立,随着专门针对过程处 理的高级程序设计语言的出现,相应地也出现了专门针对数据实现数据持久的 文件系统和数据库管理系统等技术。但是随着数据和过程在细粒度上紧耦合( 封 装) 成对象,那么最理想的状态就是把专门针对过程处理的高级程序设计语言 和专门针对数据实现数据持久化的数据库管理系统技术在细粒度上也耦合起 来,从而发展出一种新的具有持久化空间的“对象”。无疑这一种意义上的“对 象”具备了对象持久的先天优势,是绝对能解决对蒙持久化问题的。但这势必 要求抛弃旧有技术而发展出一种新的“对象”技术,而这又是人们的思想一时 所不能接受的。因而,现阶段在实现对象持久化上并没有采用这种彻底的面向 对象技术,而是保留了现有的数据持久化技术,以通过保留对象状态再还原的 方式来变相实现对象持久化。 目前,虽然业界采用了多种不同的机制来实现对象持久存储。但是,迄今 为止,最为流行的方法还是莫过于基于操作系统的文件存储机制、关系数据库 存储机制和对象数据库存储机制等三种对象持久性实现机制。其中,又以支持 事务处理、技术相对成熟的关系数据库存储机制的使用尤为普遍。 而具体到j 2 e e 平台,它也提供了四种对象持久性实现机制:j a v a 对象序 列化、实体b e a n 、”会话b e a n + j d b c ”和”会话b e a n + j d o ”实现机制。这四种 实现持久化实现机制在持久实现、系统设计和事务处理等方面都各有优缺点。 其中,又以”会话b e a n + j d o ”实现机制最为先进。而其中,j d o 是s u n 公司领 头推出的轻量级j a v a 数据库访问规范。早在1 9 9 9 年,j d o 就由一些经常编写 数据库映射层的富有经验的开发人员提出了大纲。他们在长期的面向对象的开 发中进行了大量的数据库方蕊的处理和对象化包装。终于,多种多样的包装方 式引起了很多兼容性方面的问题。于是一些主要的开发团队联合起来,以s u n 公司为领头羊,启动了j d o 规范的制定。如今,虽多经波折,但j d 0 2 0 规范 还是于今年3 月获得j c p 执行委员会的通过。 武汉理工大学硕士学位论文 目前,相关的j d 0 规范实现的产品已出现了十余种。其中,又以诸如k o d o 、 l i d o 、j 0 0 g e n i e 等产品相对比较成熟,可以考虑投入开发使用。但j d 0 毕竟还 是一项新技术,从概念上到实际应用上对其掌握的用户还不多,而这些产品在 配置、使用上的方便性、易用性还有待大幅度改进,因此,真正用j d 0 来开发 项目的用户和系统还廖廖无几。 1 3本文所研究内容 本文从对象、面向对象方法入手,重点研究了对象持久性的概念、方法及 目前所采用的对象持久性技术。并在介绍j a v a 数据对象等相关技术的基础上, 通过中小型公司基于w e b 的m i s 系统的开发,横向比较了j 2 e e 平台提供的四 种对象持久性实现机制在对象存储机制、透明持久性、数据模型的建立、数据 操作的粗粒度、可移植性和事务处理能力等方面的优缺点,以寻找一条最优的 或相对较优的对象持久化机制。特别是通过”会话b e a n + j d o ”对象持久机制+ s t r u t s 的实现研究,论证了把”会话b e a n + j d o ”对象持久机制应用于s t r u t s 框架 的可行性,提出了一个多层体系结构模型,并验证了该多层体系结构模型的可 操作性。 1 4 文章组织结构 全文共分7 章: 第一章:绪论。阐述论文研究背景、意义、国内外发展现状、研究内容以 及文章组织结构。 第二章:对象持久性。从系统开发方法的发展历程出发,介绍对象和对象 持久性的相关概念和特征,探讨分析了现阶段所采用的三种对象持久存储技术。 第三章:j a v a 对象序列化和实体b e a n 对象持久化机制。在总括介绍j 2 e e 平台上的四种对象持久化机制的基础上,详尽介绍并分析了对象序列化和实体 b e a n 对象持久化机制这两种j 2 e e 平台上的对象持久化机制。 第四章:”会话b e a n + j d b c ”对象持久化机制。详尽介绍并分析了”会话b e a n + j d b c ”对象持久化机制。 第五章:,会话b e a n + j d o ”对象持久化机制。详尽介绍并分析了”会话b e a n 武汉理工大学硕士学位论文 + j d o ”对象持久化机制。 第六章:对象持久化机制在实际系统开发中的应用。介绍了”会话b e a n + j d b c “和”会话b e a n + j d o ”对象持久化机制在实际系统开发中的应用,提出并 验证了把j d o 技术应用于s t r u t s 框架的多层体系结构模型。 第七章:总结与展望。对本论文的工作进行总结,指出了本文中许多值得 研究和探讨的问题,并对今后的工作做了展望。 武汉理工大学硕士学位论文 第2 章对象持久性 对象是使用面向对象方法进行系统开发的基本粒子。每时每刻每一个对象 都有自己的状态特征,一般这些状态会随着对象的消亡而消亡。但有时这些状 态却需要跨越对象的消亡而继续存在。这也就是对象( 状念) 持久的内涵了。 那么,什么是对象? 什么是对象持久性呢? 下面就从系统开发方法的发展历程 出发,具体介绍对象和对象持久性的相关概念和特征。 2 1系统开发方法 自计算机出现后,在现实自然世界之外就出现了一个新的名词一一计算机 世界。计算机世界本质上可以说就是现实自然世界在计算机里的模拟与再现。 而通常所讲的计算机系统实质上就是实际业务系统在计算机世界里的一种模 型。这样,计算机系统的开发就变成了如何建立实际业务系统与计算机模型系 统间的映射关系问题。从不同的角度出发可以建立不同的映射关系,从而也就 形成了不同的系统开发方法,这就是所谓的驱动对象的观点。如图2 1 所示。 图2 1 系统开靛方法学的窭质:驱动对象的观点 从驱动对象的观点来分,目前主流的开发方法有结构化方法( 即面向过程 的方法) 、数据建模方法( 即面向数据的方法,又称信息工程方法) 和面向对象 的方法。下面就对这三种典型的系统开发方法加以简单的探讨。 2 1 1 结构化方法( 面向过程的方法) 结构化方法模拟客观世界中解决实际问题的动态流程,并把它映射到计算 机世界中构成相应的结构化模型。在现实客观世界中,任何问题的解决都是通 过一个个或复杂或简单的过程来完成的。对于简单问题的解答就是一个简单的 过程;而对于“大问题则要“分而治之”,也就是先把“大问题”分解成一个 武汉理工大学硕士学位论文 一个连续的小问题,再通过对这些小问题的解答以达到“大问题”的解决。实 际上,也就是把一个个小过程按照一定的时空轴有机结合起来,构成一个大过 程。而这一个大过程实际上也就构成了这个“大问题”的解答。这样一来,对 问题的解答也就归结为个个的过程。对应的,在计算机系统中过程也就成了 组成系统的基本要素了。只不过它在计算机世界曼有了一个新的名称,那就是 “模块”。 如此一来,结构化方法的原理和思想也就非常简单明了了。概括起来就是 自顶向下、逐步求精、模块化设计。所谓模块化设计就是将软件分解为一组尽 可能功能独立的模块,程序模块除了和基本控制结构一样具有单一入口和单一 出口的结构特征之外,尚具有信息隐蔽和局部化特征,互相关连的模块在接口 上显式定义要传递的数据【1 1 。模块化原理使季导软件结构更加清晰,易理解,易 测试,易修改,从而提高了软件的可靠性。另外,模块化也有助于程序从个体 化开发方法向集体化开发方法的转化,有助于软件开发工程的组织和管理。 另外,在现实客观世界中过程操作也是有操作对象的。这个个的操作对 象抽象模拟在计算机世界中也就是一个一个的数据或数据结构。可惜的是在这 点上,结构化方法并没有与现实客观世界保持一致( 即把过程和数据结合在 一起) 而是把过程和数据分离开去。这也就是说,在结构化方法中,过程模型 和数据模型是分开建立的。这样一来,对结构化方法而言,软件开发的基本定 律一- w i r t h 定律就可以描述为:程序= 过程+ 数据( 结构) 。尽管从w i r t h 定 律中可以发现结构化方法并没有否定数据( 结构) 在系统开发中的作用,但是 结构化方法更加强调过程模型的重要性和原子性,而相对弱化数据( 结构) 的 重要地位,所以结构化方法也被称为面向过程的方法或以过程驱动的方法。 2 1 2 信息工程方法( 面向数据的方法) 随着经济全球化进程的加快和信息技术的飞速发展,i n t e r n e t 的日益普及 与电子商务的广泛应用,企业所处的商业环境发生了根本性变化。在这种形式 下,人们开始越来越关注数据,关注数据操作的运行效率。相应的在计算机 世界中,特别是计算机信息系统的开发中,人们也就逐渐把系统开发的重心由 过程转向了数据。这样也就有了面向数据的方法。又因为对数据及其运转效率 的关注程度以信息工程为最,故面向数据的方法也称为信息工程方法 ( i n f o r m a t i o ne n g i n e e r i n g i f f ) 【2 】。 武汉理工大学硕士学位论文 信息工程方法的主要焦点是用计算机来存储和维护数据,并从数据中提炼 出信息。作为i e 的重要奠基人,j a m e sm a r t i n 指出,在信息工程中,数据应 该是相对稳定的,即数据的类型和结构要相对稳定,而使用数据的处理过程的 变化则是频繁和快速的【”。数据管理人员需要更大的灵活性,以保证数据处理 过程能适应快速多变的信息需求,即在数据的基本结构建立之后,就可以使用 高级数据库语言很快建立相应的数据处理过程。因此,与结构化方法相比,信 息工程方法更侧重于数据。但正如结构化方法包括数据一样,信息工程也包含 过程。信息工程的过程模型类似于数据流图,但它主要强调过程之间的依赖关 系,而很少关心数据的输入和输出。 结构化方法和信息工程方法统称为传统方法。它们的关键概念都是数据和 过程。只不过前者以处理过程为主,而后者则以数据为主。 2 1 3 面向对象的方法 任何事物都由行为和状态两方面来构成。按照传统方法,状态在计算机世 界里可以表现为数据,而行为则更接近于过程,但又不同于过程。过程是解决 问题的流程,而行为只是某一客观事物的动态特性。传统方法都把数据和过程 分隔开来,只不过强调的重点或是过程或是数据,这样就有了结构化方法和信 息工程方法的分野。尽管把数据和过程分离开的传统方法在计算机系统开发中 有着或多或少的建树,但正是这种分离使得过程模型和数据模型的建立分隔开 来,从而大大强化了过程模型与数据模型在表达上的不一致性。而且随着问题 域的扩大和变化,正是这种分离使得按传统方法编写的计算机系统的可复用性 和可扩充性大大降低。这样也就使得软件的生产一直滞留在人工集约方式下【l j 。 软件是对数据、计算和接口等复杂思维形态的表达i lj 。目前,软件生产基 本上还停留在人工集约生产方式之上,软件生产还主要依赖于软件人员的知识 和能力。软件生产的需求各种各样,而且随着应用需求的扩大和变化,按传统 方式编写的这些软件可能很难再被利用,从而导致软件生产方式和效率远远赶 不上信息化社会发展的需要。2 0 世纪9 0 年代开始的面向对象技术的发展和工 程化,为软件生产从人工集约型向资源集约型发展带来了希望。 面向对象技术可以认为是面向过程技术和面向数据技术相结合的产物。数 据和过程被包装成对象。一个对象是由数据和能够使用这些数据的过程组成的。 只有定义在数据上的过程才能够使用和修改这一对象。不同的对象实例和对象 武汉理工大学硕士学位论文 类是通过传递能够指示它们执行某一个对象中的特定过程的“消息”来相互联 系的。因此,对w i r t h 定律的理解可以转变为:对象= 数据( 结构) + 过程: 程序= 对象+ 消息+ 对象+ 消息+ 。 这样,与传统的方法不同,一个精心定义的对象库一旦实施,就将包含可 复用的对象和编码。我们不需要每次都重新建立所有新的对象,而是在使用现 有对象仓库的基础之上,根据需要设计和实施新的对象,以满足现有对象所不 能满足的新的需求即可。 2 2 对象和对象持久性 2 2 1 对象 面向对象方法是基于客观世界的对象模型化的软件开发方法。在面向对象 程序设计中,所谓对象就是一个属性( 数据) 集及其操作( 行为) 的封装体。 作为计算机模拟真实世界的抽象,一个对象就是一个实际问题领域、一个物理 的或者逻辑的实体。在计算机程序中,对象可视为一个“基本程序模块”,因为 它包含了数据结构和所提供的相关操作功能p j 。 对象的属性是指描述对象的数据。对象某一时刻属性值的集合称为对象的 状态。对象的行为是定义在对象属性上的一组操作方法的集合。方法是响应消 息而完成的算法,表示对象内部实现的鳃节,对象的方法集合体现了对象的行 为能力【3 o 对象的属性和行为是对象定义的组成要素,有人把它们统称为对象的特性。 无论对象是有形的或是抽象的、简单的或是复杂的,一般都具有以下特征1 3 】: 具有个状态。由与其相关联的属性值集合所表征。 具有唯一标识名,可以区别于其他对象。 有一组操作方法,每个操作决定对象的一种行为。 对象的状态只能被自身的行为所改变。 对象的操作包括自操作( 施于自身) 和其它操作( 旌于其他对象) , 对象之间以消息传递的方式进行通信。 一个对象的成员可以是一个对象。 武汉理工大学硕士学位论文 2 2 2 对象持久性 正如上文所述,在系统开发过程中,不管采用哪一种系统开发方法,数据 和过程都是不可或缺的基本要素。数据是其中的静态因素,而过程则是动态的, 是对数据的处理流程。为了保障过程的顺利执行,过程处理的流程势必要求能 在一定时间范围内保留数据或中间数据以便于进一步的处理,有时这个时间范 围可能会很长,甚至会跨越整个系统的运行时间。这也就是要求某些数据能跨 越过程的运行时问而持久存在。在传统方法中,由于过程与数据的分离,过程 模型和数据模型分开建立。随着专门针对过程处理的高级程序设计语言的出现, 相应的也出现了专门针对数据实现数据持久的文件系统和数据库管理系统等技 术。但是随着面向对象方法的出现,我们把过程与数据封装起来构成了一个个 的对象。其中,过程表现为对象的方法,而数据则表现为对象的属性。这样一 来,对数据持久的讨论就上升为对对象持久的探讨了。 对象持久性指的是对象的一种时态特性,是对对象生存期的描述。一般, 对象的生存期可以初略地分为两大类:暂态和持久的生存期。生存期不超过一 个进程的对象称为暂态对象( t r a n s i e n to b j e c t ) ;生存期超过一个进程的对象称 为持久对象( p e r s i s t e n c eo b j e c t ) 。在没有持久化机制的系统中,一个对象的典 型生命周期是被创建一被使用一被删除。此时,这个对象就是暂态对象,它的生 存期就是暂态的生存期。而一旦系统支持持久化,对象的生命周期在被创建和 被使用之后,就可以通过持久化机制而延续。这样的对象也就成了持久对象, 它的生存期也就是持久的生存期了【4 j 。其实,持久性语义主要描述了两个方面 问题:如何确定一特定对象是持久的i 如何保证持久对象的数据完整性 5 】。 对象持久化技术的主要研究目标是在高级程序设计语言层次实现对象持 久性,有效地存储和管理持久性对象,使程序员按同一表达式语法就能访问暂 态对象和持久对象,统一暂态对象空间和持久对象空间【4 j 。 随着数据和过程在细粒度上紧耦合( 封装) 成对象,那么最理想的状态就 是给每个对象分配一个持久化空间,并让对应的持久化空间紧耦合在对象上, 以形成一个真正意义上的细粒度的“对象”。无疑这- - t e e 意义上的“对象”,每 时每刻都能把对象信息存储在依附其上的持久化空间上,是绝对能解决对象持 久化问题的。但这势必要求发展出一种新的“对象”技术,而相对丢弃一些旧 有技术。这是人们思想上一时所不能接受的。并且这一新的“对象”技术不仅 9 武汉理工大学硕士学位论文 需要软件思想支持,而且需要硬件系统支撵( 因为持久化空间的存在) ,这就为 系统资源的调度增加了负担。此外,因为对象信息的分散,势必为信息的统 管理( 诸如查询) 带来了麻烦。因而,基于以上种种因素的考虑,目前,在实 现对象持久化上并没有采用这种彻底的丽向对象技术,而是保留并依赖现有的 数据持久化技术,以变相实现对象持久性。 其实,从对象持久性语义上讲,对象持久实际上要求的并不是对象动态因 素的持久,而是其静态因素的持久,也就是要求对象状态的持久。这样,我们 完全可以在某一时刻把对象状态信息从对象中提取出来,并以某种方式存储在 现有的数据存储系统中。当需要时,可以铋建一个新的对象实例,并用先前存 储的状态填充,以“还原”出与原对象信息一致的对象。如此一来,也就可以 通过先保存对象状态并在以后恢复它的方法来存储和检索对象了。如图2 2 质 示。此外,还要考虑持久对象的存储场所,持久化的对象可以存储在文件系统、 数据库系统或大型事务处理系统中。 读取信息,需要保存 开发人员保存信息 图2 2 处理信恩的传统的持久化 例如,为了保存一个订单o r d e r 对象,开发人员需要编写代码将订单的属性 ( 如日期、数量等) 以及如订单项l i n e l t e m 对象中的相关属性插入到某个数据 仓库中。当需要的时候,对数据仓库中某个惟一标识了关于o r d e r 集合信息的字 段进行查询,创建一个新的o r d e r 对象并用这些信息填充。 通常,在这种方式下实现对象持久性的应用程序开发应遵循下列步骤诤j : 1 1 确定对象模型。 2 ) 并确定模型中的持久化实体, 3 ) 编写数据模式来映射持久化实体信息。 4 ) 编写代码,以数据存储系统可以理解的格式来存取信息。 5 1 编写应用程序代码,使用类来完成业务任务。 武汉理工大学硕士学位论文 图2 - 3 传统的持久性导致7 两个模型 如图2 3 所示,开发人员必须定义、建立并且使用在程序中映射相同业务 域的两个模型:在应用程序代码中的业务对象以及它们在数据库中代表的关系。 它们还要保证两个模型的视图以及行为保持一致,因为对二者之一任何细小的 改变都将导致模型与现实世界业务之间的不匹配。 垂直持久性是持久性基础上的一个新的概念。它的核心思想是要求应用程 序的设计应该较少依赖,甚至不依赖于整个底层持久性的基础结构。当满足以 下三个准则时,就可以认为应用程序具有了垂直持久性1 6 】: 一数据类型垂直准则。要求所有的数据,不管什么类型,都应该可以被持 久化。在此没有任何对象不允许持久化或者不允许是临时的特例。 独立持久性准则。要求应用程序代码无论是操纵持久对象,还是操纵暂 态对象都应该没有区别。 一可达性持久准则。当某一对象持久化或者被标记为将被删除时,其所引 用的整个对象树因为引用关系,都可以被持久化或者被垃圾站回收。 使用了任何形式的垂直持久性的体系结构都与我们前面看到的传统的持 久性方法有很大的区别。这种模型直接处理对象,而不是直接处理对象中包含 的数据信息。开发人员在代码中直接使用持久性对象( 如同使用任意其他的应 用对象一样) ,而不是使用数据信息并在对象之间来回地映射这些数据信息,如 图2 - 4 所示。在此如何持久化并重新建立这些对象的细节对开发人员来说是透 明的。这通常被称为透明的持久性【6 1 。现阶段在j 2 e e 架构上的j d o 技术就是 一项实现了透明持久性的技术。有关j d o 的具体细节将在论文后面的章节里探 讨。 通过使用透明的持久性设计,架构师和开发人员只需关注应用程序,而无 需关注其中包含的数据信息。同前面列出的步骤对照,使用透明的持久性设计 开发将减少“编写数据模式来映射持久化实体信息”的步骤。 武汉理工大学硕士学位论文 对象 开发人员保存信息 开麓人员歆取信息 图2 4 直接处理对象的透明的持久化 如图2 5 所示,用透明的持久性进行设计将非常简洁,开发人员只需要编 写并维护一个模型或程序的表示。 目前,在企业应用程序开发中,一方面面向对象的开发方法被广泛地使用: 另方面在数据存储方面,由干传统和性能的考虑,人们可能更多的使用或选 择关系数据库。这就需要关系和对象的统一。把对象存储到关系数据库中有两 种策略,一是围绕关系数据库来建立面向对象的应用,每一个对象,都要懂得 如何存取其属性信息;二是把面向对象应用移到关系数据库中实施,以关系表 格来模拟对象。前者可称为映射法,它把应用系统与数据存储分开,有利于系 统的管理和扩展,是一种可行的策略。在这种策略下,对象持久化可以通过内 嵌s q l 语句方法、紧耦合映射方法和健壮的持久层方法来具体实现”j 。 2 3目前所采用的对象持久存储技术 对象持久化需要存储对象的当前状态,以便应用程序能在将来某个时闻内 查询这些对象的状态,并依据它们恢复这些对象。目前,虽然业界采用了多种 不同的机制来实现对象存储。但迄今为止,最为流行的方法还是莫过于基于操 作系统的文件存储机制、关系数据库存储机制和对象数据库存储机制等三种对 武汉理工大学硕士学位论文 象存储机制。其中,又以支持事务处理、技术相对成熟的关系数据库存储机制 的使用尤为普遍。有鉴于此,本文其后在介绍j 2 e e 平台上的四种对象持久性机 制,特别是在介绍除对象序列化s j t s j j 之外的其它三种机制时,主要以关系数据 库存储机制作为基础展开探讨。 2 3 1 基于操作系统的文件存储机制 通常情况下,文件系统被认为是轻量级的对象持久性解决方案。虽然文件 系统能以用户定义的格式将数据存储在一个文件中,但文件系统本身不能支持 事务,不能自动实现数据完整性等功能1 6 j 。 但相对而言,文件系统还是提供了一个好处:除了操作系统本身外,文件 系统几乎不再需要任何其他额外的支持性服务。因此,通常使用文件系统来满 足嵌入式应用程序中所需的数据持久性。一般情况下,企业中的事务信息采用 文件系统实现其持久性是不适合的。 2 3 2 关系数据库存储机制 在过去的1 5 年中,关系数据库管理系统( r d b m s ) 技术凭借其定义数据 的自由性、查询数据的灵活性以及事务处理的可靠性而得到了广泛的应用。 一般情况下,使用关系数据库实现对象持久性的j a v a 应用程序,都通过 个被称为j d b c 的a p i 将s q l 命令发送到数据库服务器,来访问相应的数据库。 通过j d b c 的a p i ,s q l 命令首先被创建为字符串对象;然后,这些字符串对 象将被传输到数据库服务器,并在其上进行解释和执行。 此外,采用关系数据库存储机制,也可以通过在对象和关系数据库之间的 对象一关系( o 侬) 映射来实现对象持久存储。也就是说,对象、对象的属性 及对象间的关系必须采用某种方式映射为关系数据库中的表、字段和表关系。 现在已经有专门的比较彻底的j a v a 对象映射工具来实现对象的持久性。比如, h i b e r n a t e 就是一种对象持久化工具。它通过其强大的o r 映射功能将j a v a 对 象同存放在关系数据库中的数据记录对应起来,从而避免了开发人员使用大量 的s q l 语句通过j d b c 的方式对数据库进行操作,有效地提高开发的效率。 武汉理工大学硕士学位论文 2 3 3 对象数据库存储机制 采用对象数据库管理系统( 0 d b m s ) 方式存储对象,意味着整个对象都存 储在对象数据库中。也就是说,在对象与数据库之间并没有对象关系的映射, 用户也不需要使用j d b c 或s o l j 来查询对象,而是使用一种对象查询语言 ( o q l :o b j e c tq u e r yl a n g u a g e ) 。o q l 是一种高层对象属性查询接口,使用它 可以方便地查询对象的每一个属性【”。此外o d b m s 还支持对象关系因此基 于o q l 的查洵比基于s q l 的连接查询要显得更加直观。 对应用程序开发人员而言,对象数据库对对象的存储功能是透明的。应用 程序开发人员只需使用相关的a p i 来持久存储对象或检索对象即可,而不必了 解对象数据库的具体实现细节。尽管对于某些特定的操作而言,对象数据库具 有非常高的效率。但是一直以来对象数据库都因为缺乏某种特定的查询功 能一或者说即使对象数据库提供了这样的查询功能,但仍然缺乏足够的效率 来执行这些功能一一从而使其作用受到很大的影响。又因为o d b m s 缺乏定义 良好的标准来调用持久性对象服务,再加上o d b m s 应用程序对特定软件提供 商提供的专用产品的依赖性,从而使得这种技术的广泛采用受到很大的限制。 武汉理工大学硕士学位论文 第3 章j a v a 对象序列化和实体b e a n 对象持久化机制 j 2 e e 是由s u n 公司领导的、多家公司共同参与制定的一个分布式企业级应 用程序开发规范。这一规范为我们提供了四种不同的对象持久化机制。 j a v a 对象序列化 也称为j a v a 对象串行化。它直接将某个j a v a 对象的状态以及它所指向的 其它对象结构图全部写到一个用于网络传输或数据存储的输出流( 字节流) 中。 它保障了被写入对象间的关系。这样就可以重构该对象结构图。但它不支持事 务处理。本质上,它是基于操作系统的文件存储机制在j 2 e e 平台上的具体实现。 实体b e a n 它提供健壮的数据持久性。b e a n 容器处理大部分数据完整性、资源管理和 并发性功能这样开发人员只需关注业务逻辑和数据处理,而不必关心那些低 级细节。按照持久性管理的主体不同,实体b e a n 分为两种:b e a n 管理持久性 的实体b e a n ( b e a n m a n a g e d p e r s i s t e n c e ,b m p ) 和容器管理持久性的实体b e a n ( c o n t a i n e r m a n a g e d p e r s i s t e n c e ,c m p ) 。使用前者时,需要开发人员编写持久 性代码而容器确定何时执行该代码。使用后者时,容器生成持久性代码并管理 持久性逻辑。 会话b e a n + j d b c 当j d b c 与会话b e a n 结合时,它可提供简便的e j b 开发和与平台无关的 部署,而没有象e j b 技术那样使用大量的资源和内存。象b m p 实体b e a n 一样, 该解决方案要求开发人员编写持久性代码。与b m pb e a n 不同的是,它还要求 开发人员编写持久性逻辑。因而,开发人员负责确定何时将数据持久保留在数 据存储中以及何时从数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学26年:CKD钙代谢紊乱管理 查房课件
- 城市环境卫生作业质量标准(2026年)
- 2025年中国烟草总公司天津市公司招聘考试笔试试卷
- 山东畜牧兽医单招考试题及答案2025版
- 杭州社区计生试题及答案
- 大学人文读书社社长竞选演讲稿
- 人保寿险团体年金保险计划农村新型合作养金保险计划介绍
- 初级会计实务考试试题
- 精神科住院抑郁症患者自杀预防护理共识2026
- 2025年建筑行业数字化转型案例研究报告
- 2026广东东莞市松山湖社区卫生服务中心招聘纳入岗位管理编制外人员4人笔试备考试题及答案解析
- 2026西藏阿里地区普兰县审计局招聘审计协助人员的2人备考题库有答案详解
- 2026河南科高产业集团有限责任公司高级管理人员招聘7人笔试备考试题及答案解析
- 2026年中考历史考前冲刺:中国+世界(古代史|近代史|现代史) 小论文范文汇编
- 2026年广东省高三语文4月二模联考试卷附答案解析
- 2025版《CSCO前列腺癌诊疗指南》全文
- 2026年中级社会工作者《社会工作综合能力》考试押题密卷带答案详解(模拟题)
- 课堂碎嘴子的代价主题班会课件
- 医院三合理一规范培训
- DBJ50-T-157-2022房屋建筑和市政基础设施工程施工现场从业人员配备标准
- 患者跌倒的预防及管理课件
评论
0/150
提交评论