(计算机系统结构专业论文)面向mes的数据持久层框架的设计与实现.pdf_第1页
(计算机系统结构专业论文)面向mes的数据持久层框架的设计与实现.pdf_第2页
(计算机系统结构专业论文)面向mes的数据持久层框架的设计与实现.pdf_第3页
(计算机系统结构专业论文)面向mes的数据持久层框架的设计与实现.pdf_第4页
(计算机系统结构专业论文)面向mes的数据持久层框架的设计与实现.pdf_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

c o l l e g eo fc o m p u t e rs c i e n c e c h o n g q i n gu n i v e r s i t y a p r i l2 0 0 7 重庆大学硕 摘要 m e s ( m a n u f a c t u r i n ge x e c u t i o ns y s t e m ) 是实施企业敏捷制造战略和实现车间 生产敏捷化的基本技术手段。与一般系统不同,m e s 的构建过程有三个难点需要 考虑:( 1 ) 系统数据处理量巨大,实时性高,对性能要求极为苛刻,必须通过高 度优化的s q l 语句( 或存储过程) 才能达到系统性能设计指标。( 2 ) 系统的数据 来源多样化,对于不同的数据,应能提供统一的调用接口,以保持系统的可移植 性和可扩展性。( 3 ) 系统的数据模型比较复杂,通常情况下不能对其进行任意的 修改。针对以上三个原则,论文提出了基于改进d a o ( d a t aa c c e s so b j e c t ) 设计模 式的s q l 层面上映射的持久层框架,较好解决了m e s 构建中数据采集与交换带来 的系统瓶颈;提高了系统的实时性、可伸缩性和可维护性。 论文针对m e s 构建需求,在分析比较现有应用中各种持久层解决方案的基础 上,进一步对当前优秀持久层框架- - - o r m ( o b j e c tr e l a t i o nm a p p i n g ) 的对象关系映 射方法及相关机制进行了深入研究。论文借鉴o r m 实现机制,并参考m e s 本身应 用的特点,提出了基于s q l 映射的持久层框架,相对h i b e r n a t e 等提供“全自 动”o r m 实现t p o j o ( p l a i no r d i n a r yj a v ao b j e c t ) 和数据库表之间的映射,以及 s q l 的自动生成和执行而言。本设计的着力点,则在于p o j o 与s q l 之间的映射 关系。数据库操作在映射文件中加以定义,从而将数据存储逻辑从上层逻辑代码 中独立出来,而底层数据操作的s q l 可配置化,使得我们可以控制最终的数据操作 方式,通过s q l 的优化获得最佳的数据库执行效能,这在依赖s q l 自动生成的“全 自动”o r m 机制中是所难以实现的。为提高系统的可移植性和可扩展性论文引入了 改进的d a o 设计模式。最后对整个框架的具体设计实现进行了详细的分析。 面向m e s 的持久层框架部分研究成果已经在一家制造企业中实施,在实际的 系统应用中系统得到了很好的改进和优化,并且取得了很好的使用效果。该系统 的实施案例能为m e s 在类似企业中的实施提供参考,同时,实践证明,基于s q l 映射的持久层框架具有很高的实用价值,值得我们进一步研究和推广。 关键词:制造执行管理系统,持久层,对象关系映射,h i b e r n a t e ,s q l 映射,数 据访问对象,设计模式 重庆大学硕士学位论文 英文摘要 a b s t r a c t m a n u f a c t u r i n ge x e c u t i o ns y s t e mi s t h eb a s i ct e c h n i c a ls k i l l si m p l e m e n t i n gt h e a g i l em a n u f a c t u r i n gs t r a t e g ya n dr e a l i z i n gt h ea g i l es h o pp r o d u c t i o n t od i s t i n g u i s h w i t ht h eg e n e r a ls y s t e m ,t h ep r o c e s so fc o n s t r u c t i n gm e sf o l l o w e dt h r e ed e s i g np o i n t s : ( 1 ) ah u g ea m o u n to fd a t ap r o c e s s i n g ,r e a l t i m eh i g hp e r f o r m a n c er e q u i r e m e n t so f e x t r e m e l yh a r s h t h r o u g hh i g l l l yo p t i m i z e ds q ls t a t e m e n t s ( o rs t o r e dp r o c e d u r e ) i n o r d e rt oa c h i e v ed e s i g np e r f o r m a n c et a r g e t s ( 2 ) d i v e r s i f i c a t i o no ft h es o u r c e so fd a t a , d i f f e r e n td a t a ,i ts h o u l db ea b l et op r o v i d eau n i f i e di n v o k i n gi n t e r f a c e ,m a i n t a i nt h e p o r t a b i l i t ya n ds c a l a b i l i t yo ft h es y s t e m ( 3 ) t h ed a t am o d e lo ft h es y s t e mi sr a t h e r c o m p l i c a t e d ,u n d e rn o r m a lc i r c u m s t a n c e s ,n o ti t sa r b i t r a r yc h a n g e s i nl i g h to ft h et h r e e p r i n c i p l e s ,b a s e do nt h ei m p r o v e dd a od e s i g np a t t e r no ft h es q l l e v e lm a p p i n g p e r s i s t e n c el a y e rf r a m e w o r k i sg i v e no u tb yt h i sp a p e r t h i sf r a m ei sb e t t e rs o l v i n gt h e m e sc o n s t r u c t i o nd a t aa c q u i s i t i o na n dt h ee x c h a n g eo fs y s t e mb o t t l e n e c k s ;i m p r o v e t h es y s t e m sr e a l t i m ep e r f o r m a n c e ;s y s t e ms c a l a b i l i t ya n dm a i n t e n a n c em a n a g e m e n t h a sb e e nu p 伊a d e d a i m i n ga tt h ep a r t i c u l a ri n d u s t r ya p p l i c a t i o nb a c k g r o u n do fm e s ,t h i sd i s s e r t a t i o n f i r s t l ya n a l y z e sa n dc o m p a r e st h ev a r i o u ss o l v i n ga p p r o a c h e so fp e r s i s t e n tl a y e ri nt h e c u r r e n ta p p l i c a t i o n t h e nm a k ead e e pr e s e a r c hf o rt h em e t h o d so fo b j e c tr e l a t i o n a l m a p p i n ga n di t sr e l e v a n tm e c h a n i s mo fo r m ,w h i c hr e f e r st ot h ee x i s t i n go u t s t a n d i n g p e r s i s t e n tf r a m e t h eo r mi m p l e m e n t i n gm e c h a n i s mc o m b i n e dw i t ht h er e f e r e n c eo f t h ec h a r a c t e r i s t i c so ft h em e sa r eu s e df o rr e f e r e n c eb yt h i sp a p e r t h e nap e r s i s t e n t f r a m e w o r kb a s e do nt h es q l m a p p i n g i sg i v e no u t c o m p a r ew i t ht h eh i b e r n a t e ,w h i c h p r o v i d eaa u t o m a t i co r m ,r e a l i z i n gt h em a p p i n go fp o j oa n dd a t a b a s et a b l ea n dt h e a u t o g e n e r a t i o no fs q la n di m p l e m e n t a t i o ni sc o n c e r n e d t h ef o c u sp o i n to ft h i sp a p e r l i eo nt h em a p p i n gr e l a t i o no fp o j oa n ds q l d a t a b a s eo p e r a t i o ni nm a p p i n gd o c u m e n t s t ob ed e f i n e ds oa st h ed a t as t o r a g el o g i cc a nb ei n d e p e n d e n tf r o mt h et o pl o g i cc o d e , a n dt h eb o t t o mo ft h es q ld a t am a n i p u l a t i o nc a nb ec o n f i g u r a b l e t h i sa l l o w su st o c o n t r o lt h eu l t i m a t ed a t ao p e r a t i o n t h eb e s tp e r f o r m a n c ec a nb eo b t a i n e dt h r o u g hs q l o p t i m a z a t i o n t h i s r e l i a n c eo na u t o m a t i cs q lg e n e r a t i o nw h i c hi sr e f e r e dt oa s a u t o m a t i co r mm e c h a n i s hi se l u s i v e t oi m p r o v et h ep o r t a b i l i t ya n ds c a l a b i l i t yo ft h e s y s t e m ,t h i sp a p e ri n t r o d u c e da ni m p r o v e dd a od e s i g np a t t e r n f i n a l l y , ad e t a i l e d a n a l y s i so f t h ee n t i r ef r a m e w o r k ss p e c i f i cd e s i g ni sg i v e no u t 1 1 i l l 2 现有持久层方案可选技术分析1 0 2 1 直接在业务类中硬编码。1 0 2 2 创建对应业务类的数据类1 0 2 3 容器管理持久实体b e a n ( c m p ) 11 2 4j a v a 数据对象( j d o ) 1 l 2 5o r m a p p i n g ( 对象关系映射) 1 3 2 5 1o r m 的解决方案。13 2 5 2o r m 实现的级别1 4 2 5 3o r m 的优点1 5 2 6 本章小结1 6 3o l ;u 垤持久层框架h i b e r n a t e 的技术研究1 7 3 1h i b e r n a t e 体系结构1 7 3 2 映射机制1 8 3 2 1 简单映射18 3 2 2 关联映射19 3 2 3 实体对象的生命周期1 9 3 3 高级特性2 0 i v 重庆大学 3 3 1 事务管理2 0 3 3 2 延迟加载2 0 3 3 3 缓存2l 3 3 4 多样的查询方式2 l 3 4 编程模型一2l 3 5 本章小结2 2 4 基于s q l 映射的持久层框架设计2 3 4 1 基本设计思路一2 3 4 2 设计的基本思想2 4 4 2 1 结构化查询语言( s q l ) 2 5 4 2 2 存储过程( s t o r ep r o c e d u r e ) 2 5 4 2 3 内嵌的结构化查询语言o n l i n es q l ) 2 6 4 2 4 动态结构化查询语言( d y n a m i cs q l ) 2 7 4 2 5 对象关系映射( o r m ) 。2 8 4 2 6 本框架的设计思想2 8 4 3s q l m a p 框架映射基本原理。31 4 4 持久层设计模式分析3 3 4 4 1d a o 模式3 3 4 4 2p r o x y ( 代理) 模式3 7 4 4 3 改进的d a o 设计模式3 9 4 5 本章小结3 9 5 面向m e s 持久层框架的实现4 0 5 1d a o 框架组件设计实现。4 0 5 1 1d a o 框架总体结构4 0 5 1 2x m l 配置管理4 l 5 1 3 事务管理器的实现与配置4 3 5 1 4d a o 的管理4 4 5 2j a v a b e a n 到x m l 的相互转换4 5 5 2 1x m l 数据读取方式4 5 5 2 2b e a n x m l m a p p i n g 组件4 6 5 2 3 从j a v a b e a n 转换到x m l 4 9 5 2 4 从x m l 转换到j a v a b e a n 5 0 5 3s q l m a p 持久框架的设计实现5 0 5 3 1 持久对象生命周期5 0 v 重庆大学硕士学位论文 5 3 2s q l 映射规则 5 3 3 动态映射 5 3 4 事务管理 5 3 5 对象缓存管理 5 4 框架的优点与不足 5 5 本章小结 6 总结和展望 致谢 参考文献 附录 重庆大学硕士学位论文1 绪论 1 绪论 1 1 课题研究背景 m e s ( m a n u f a c t u r i n ge x e c u t i o ns y s t e m ) ,简称“制造执行系统”。美国研究机构 a m r ( a d v a n c e dm a n u f a c t u r i n gr e s e a r c h ) 对m e s 的定义是:位于上层计划管理 系统与底层工业控制之间,面向车间层的管理信息系统【2 】。m e s 在工厂综合自动 化系统中起着中间层的作用,在m e s 下层,是底层生产控制系统,如d c s 、p l c 等;在m e s 上层,则是高层管理计划系统,如e r p 、m r p i i 。m e s 主要关注车间 里的制造执行过程,它以计划为起点,收集与分析制造执行过程的关键信息,使 原来如同黑箱的生产车间变得透明,从而加快供应链的反应速度。m e s 最大的价 值在于“数据”与“信息”的采集和转换。如图1 1 所示为e r p m e s 底层控制之间 的数据流关系。m e s 在上层e r p 和车间控制层之间建立的联系主要体现在两个方 面:自顶而下信息流的传递,自底而上的信息反馈;生产作业计划、任务、指 令的下达,任务执行状态的反馈。 自顶而下数据流传递 e r p 系统的驱动数据来源于客户订单和销售预测,在m r p 运行后将主要产生 两种输出:采购件的采购订单和自制件的工作订单( w o r k o r d e r ) 。采购订单直接下达 给采购部门,或与s c m 系统集成进行物流计划以及跟踪、监控物流状态自制件的工 作订单下达到相应的工作中心( 一般指车间的m e s ) ,工作订单中包含了物料、生产 数量、完工日期等信息,除了工作订单,还有一些其它信息如标准物料b o m 、标准 生产工艺、设计文档等也下达到m e s ,根据这些信息m e s 产生更为详细的资源分 配、工序和生产调度,并形成工作指令下达给控制层的人工、设备或控制系统,同时 将控制系统需要的控制参数发送给控制层。 自底而上数据流反馈 底层控制接受到m e s 下达的工作指令完成相应工序。在控制层工作的同时 或完成后将底层信息实时地反馈给m e s ,这些信息既包括实时生产信息,如起止时 间、装夹时间、等待时间、排队时间、实际工作时间、完成数量、废品数量,又包 括作业任务状态以及底层设备人工状态;m e s 在反馈的底层信息基础上,对某些信 息再进一步处理并反馈给e r p 系统,如工作订单状态完成情况起止时间、资源状态、 工时信息、实际的物料b o m 、实际的生产工艺、w i p 信息、废品信息、实际库存 状态,这些反馈信息对e r p 系统至关重要:1 ) 使e r p 中的物料b o m 、生产工艺根 据反馈数据得以调整,从而使物料b o m 、生产工艺、提前期更为准确;2 ) 实时的资 重庆大学硕士学位论文1 绪论 源状态( 物料、人工、设备) 使闭环m r p 得以实现;3 ) 实时信息的反馈使成本计算、 w i p 状态、库存状态更加可靠。 由此可看出基于面向对象技术开发的m e s 系统有以下特点: 异构性:系统中存在大量不同类型的对象。 组织性:系统中的对象不是零散的,而是有组织地分布在几个不同的树形 模型之中。在一个模型中,各种对象的类型之间往往存在继承关系。 网络性:系统中的各种对象之间存在复杂的指引关系。因为各个模型之间 并不是相互独立的,相互之间存在着各种联系,因此不仅在同一个模型中的对象 之间会互相指引,不同模型的对象之间也存在指引关系。 海量性:系统中的对象数目巨大。当分析大型程序时,系统中各个模型中 的对象总数一般都在几十万甚至数百万。如此大量的对象对系统的效率提出了很 高的要求。 增量性:大型对象系统往往采用渐进的螺旋式开发,在开发过程中,新的 对象和新的对象模型不断加入。这就要求系统能够用最小的代价实现对新的对象 和新的对象模型的支持。 通过对以上m e s 系统特点的研究可以看出,为了平衡系统的数据通讯负载, 保证系统对异构环境的支持,同时保证系统数据的实时性能及整个系统的可扩展、 可维护的伸缩性能,在m e s 的业务逻辑层中分离出专门的持久层对各种来源不同 数据进行专门的处理及持久化操作。这是本文研究的背景与初衷。 图1 1m e s 的数据流 f i g 1 1d a t af l o wo f m e s 2 重庆大学硕七学位论文i 绪论 1 2 数据持久层框架的概论 1 2 1 持久层框架的定义 持久层框架是一组软件服务,将应用程序与其使用和操纵的数据源分离。持久 性框架位于机构的数据源之上,隐藏访问这些数据源的数据访问a p i ( 如:j d b c 、 j d o 或实体e j b ) 【1 1 。提供的服务应完全抽象和从这个数据源使用和操纵数据的物 理细节。通常情况下,图1 2 显示了持久层在软件体系结构中的位置: 表述层 表述层 j r 业务逻辑层f l 一业务逻辑层 _ 1 持久层 j ,、,、 k 一 卜、一 数据库层 数据库层 、l 一一 、l , 图1 2 从业务逻辑层分离出持久层 f i g1 2s e p a r a t ep e r s i s t e n tl a y e rf r o mb u s i n e s sl o g i cl a y e r 1 2 2 持久层需求 一般性约束 一个应用系统中对持久层的要求,主要从以下几个方面考虑: 1 ) 性能在把对象映射到表时,性能将是最主要的考虑因素。对象映射到表 的方式将会对数据库访问的次数有显著的影响。数据库访问通常是在磁盘上或其 它外部媒介上执行,它们的访问时间数量级大约在毫秒级,而c p u 的处理周期 是在纳秒级。因此,较好的做法是浪费一些存储周期和内存空间,来提高慢速i o 的性能。其中有一些做法是计算机可以自己做的,例如c a c h e 、d m a 方式等等, 有一些则需要在持久层设计和实现的过程中手动处理,减少对数据库的访问次数, 例如延迟读、为数据置标志位等等。 2 )读性能和写更新性能不同的映射机制在读性能和写更新性能方面有着 不同的特色。某些映射允许在单次的数据库访问中读取所有数据,而用多次的数 据库操作来写入一个对象,这是继承映射。因此在确定表设计之前,首先需要了 解读和写更新操作的频率。 重庆大学硕士学位论文1 绪论 3 ) 弹性和维护成本在应用持久层的过程中,一般在设计阶段既要考虑引入 对象关系映射。随着开发过程的进展,有时候需要对模型和映射进行修改。也就 是说,需要对已有的对象模型添加或删除属性,增加或者删除类;以及对数据库 模式进行修改,添加或删除字段,增加或删除表。为了在这种情况下保证在对象 模型达到稳定时获得最佳的映射效果,这就要求持久层能够保证一定的弹性,方 便对映射模型的修改,并使得维护成本降到最低。 5 ) 空间消耗性能某些映射不会浪费数据库空间( 类似于空值字段) ,另一 些则需要大量无用的数据库记录。因此,需要权衡两者之间的关系,以达到最佳 映射效果。 6 ) 应用系统类型m e s 系统和其他的应用( 如图形处理等) 对映射层的要求 肯定是不一样的。因此,为m e s 系统设计的持久层实现不一定适用于其他类型的 应用。本文中的设计都是从m e s 系统的角度考虑。 7 ) 对旧有系统的整合很多情况下,系统的开发都要充分考虑和已有系统的 连接问题,而已有的系统通常情况下不允许改动。这个时候就要求持久层能够从 已有的数据中构建对象。 持久层需求 软件工程理论要求,开发任何系统之前,必须充分了解该系统的需求。对持 久层来说也不例外。一个持久层封装了使对象持久的行为,也就是从数据存储中 读取、写入、删除对象,一个健壮的持久层应该满足以下这些要求【3 】: 1 ) 多种持久机制。一个持久机制是一种可以永久保存对象使其可以在以后 被更新、获取和删除的技术。该持久层应该支持多种底层存储机制。对于一个实 现对象一关系映射的持久层来说,应该支持多种关系数据库产品。 2 ) 对持久机制进行完整的封装。理想情况下,只需要发送s a v e 、d e l e t e 、r e t r i e v e 消息给一个对象,就可以保存、删除或者获取它,持久层完成其它的工作。进一 步讲,除了对已知异常的处理,不必写任何其它关于持久层的代码。 3 ) 基于条件的多对象操作。因为一次返回多个对象是很常见的,例如一个 报表或者一次用户定制的搜索,一个健壮的持久层必须可以支持根据一定条件同 时返回多个对象的情况。对于根据一定条件删除多个对象也同样应该支持。 4 ) 基于关联的多对象操作。就象在关系数据库中可以进行关联的删除、获 取和保存一样,这些操作也应该可以针对对象。一个最好的例子就是一个i n v o i c e 对象拥有多个l i n e i t e m 对象实例,在获取、删除或者保存一个i n v o i c e 对象的时 候,应该自动的获取、删除或者保存它的l i n e l t e m 对象。 5 ) 事务。与需求3 相关的是支持事务,也就是针对多个对象的一组操作。 一个事务应该由保存、获取或删除的任意组合组成。事务可以是简单的,一种“要 4 重庆大学硕士学位论文1 绪论 么全部或要么没有”的方式,操作必须全部成功或者全部回滚( 取消) 。或者也可 以是嵌套的,在外层的事务失败的时候,嵌套的事务仍然提交而不回滚。事务可 以是短期的,只运行千分之一秒,或者是长期的,花费几小时、几天、几周甚至 几个月。 6 ) 扩展性。如一般性约束中提到的,持久层应该允许以增加新的类或者属性, 并且能容易的变更持久机制( 例如从一个厂商的产品移植到另一个产品,或者是 升级) 。 7 ) 游标。一个支持从一个命令获取多个对象的持久层,也应该支持获取游 标。这是一个效率问题。游标是一个到持久机制的逻辑连接,从这个连接,可以 可控的获取对象,通常一次多个。这样常常比一次返回上百个甚至上千个对象要 有效率,因为用户可能并不立即需要所有的这些对象( 可能通过一个列表翻滚) 。 8 ) 代理。对游标的一个补充就是“代理”。代理代表另外一个对象,但是又不 会导致与被代表的对象同样的开销。代理只包括足以让计算机和用户标识它的信 息,而没有其它的内容。例如,一个p e r s o n 对象的代理包含它的o l d ,因此应 用程序可以标识它,也包含姓、名以便用户可以分辨出这个代理代表的是谁。代 理通常在用户在一个显示出来的结果集列表中选择一条或者两条的时候使用。在 用户从列表中选择了代理对象的时候,真正的,比代理对象大的对象被自动的从 持久机制中获取出来。例如,完整的p e r s o n 对象可能包括地址和个人照片。通过 使用代理,你不必在网络上传递每个p e r s o n 对象的所有信息,而只传递那些将被 实际用到的。这也被称为l a z yr e a d 。 9 ) 连接池。持久层应该可以共享数据库的连接,尤其是如果将被部署为应 用服务器的一部分的时候。在这种情况下,几百个甚至几千个客户会连接到一个 应用服务器。因为每个连接都需要内存并且并非每个客户都需要连续访问一个固 定的持久机制,所以在持久层维护一个连接池,并且在所有客户当中共享连接是 有必要的。 1 0 ) 缓存。一个提高性能的方法就是缓冲对象。持久层应该实现一个对象缓 冲锁。应该可以在访问数据的时候指定使用悲观的锁或者乐观的锁。 持久层应该让应用程序开发者集中精力于他们所擅长的一开发应用程序,而 不用关心他们的对象是如何存储的【3 | 。进一步说,持久层应该也允许数据库管理员 ( d b a ) 在管理数据库不用担心在现有的应用程序中引入数据库操作相关的 b u g 。对于一个好的持久层,d b a 应该可以移动表,重命名表,重命名列以及重 新组织表而不影响应用程序对他们的访问。一个能够满足这些要求的持久层设计 是非常复杂的,然而,并非完全不可实现。在下面的章节中笔者将陆续讨论如何 构建一个这样的一个持久层。 重庆大学硕士学位论文l 绪论 1 2 3 持久层研究的意义 异构对象的统一存储:对象的异构性导致系统必须对各种不同类型的对象 的持久化分别作处理,而对大量不同类型的分别处理必然导致系统结构的混乱。 因此,为了应对对象的异构性,必须统一对象系统持久化的接口,并提供一套类 型辨别机制来处理不同类型的对象持久化。 持久化对象的透明访问:对象的访问者应该能够在不了解对象存储细节的 条件下对对象进行正常的访问,对象之间的访问也是如此。 多对象库支持:持久化对象可以按其组织存储在多个对象库中,从而实现 对多个对象模型的支持。 高效:从时间上而言,要保证对象的存储和访问速度不随对象数目的增多 而明显下降;从空间上而言,当不能一次将所有对象都放入内存时可对在内存和 外部存储中的对象进行透明访问。 易扩充性:当系统中加入新的对象和新的对象模型时,不需要对持久化系 统作修改,而只是局部扩充就可以了,从而满足面向对象设计的开放一闭合原则。 1 2 4m e s 应用中持久层框架的地位和作用 m e s 需要收集生产过程中大量的实时数据,并且对实时事件能及时进行处理, m e s 需要同时与计划层和控制层保持双向通信能力,从上下两层接收相应数据并 反馈处理结果和生产指令,因此底层与上层频繁的数据流交互成为m e s 伸缩和扩 展的一个瓶径,此外计划层或控制层业务需求的灵活变更也会给m e s 系统的维护 带来一定的困难。在业务层和关系数据库之间增加一个健壮的持久层,负责实现 对象和关系数据库之间的映射。利用这个映射机制,对象与关系数据库之间的转 换就可以透明地进行,而不用去关心数据库连接、并发性和事务等问题,即业务 层就可以直接获取或存储对象,中间的转换过程就交给持久层框架处理了。这样 就可以避免由于数据库结构或类中任何一方变化时系统的大幅修改,极大减少了 系统层次之间的耦合性,同时高效的缓存数据处理和对象持久化策略可以极大消 除系统的瓶径。 1 3j a v a 持久化技术的发展现状 s u n 公司从1 9 9 6 年就把j d b c 加入了j a v a 平台的1 1 版本之中,将其作为 r d b m s 资源管理和数据访问的标准低级抽象层。很快众多开发者意识到:直接使 用j d b c a p i 是相当麻烦的一件事。因此,在随后的几年中,各种层次较高的解决 方案开始浮现出来。其中包括各家软件公司内部使用的和开源的解决方案【5 】。 t o p l i n k ,c o c o b a s e ,o d m g 业界领先的j a v ao r 映射解决方案之一t o p l i n k 最初是用s m a l l t a l k 编写的。 6 重庆大学硕士学位论文1 绪论 o b j e c tp e o p l e 公司于1 9 9 7 年将注意力转移到j 下在成长的j a v a 市场,发布了t o p l i n k 的第一个版本,不久t h o u g h ti n c 公司也发布了他们的c o c o b a s e 产品。在一段时 间里,这两个产品是仅有的成熟的o r 映射工具,而它们高昂的授权费也令很多 项目望而退步。产品复杂度的问题可能也降低了采用o r 映射产品的比例。 1 9 9 7 年,对象数据管理组织( o b j e c td a t am a n a g e m e n tg r o u p ,o d m g ) 发布了对 象持久化标准a p i 的2 0 版本,定义了j a v a 与其他语言对象和数据的绑定。后续 的3 0 版本是在2 0 0 0 年初发布的,但这两个标准都没有受到广泛的接收。o d m g 考虑的主要是如何访问对象数据库,o r 映射只是附带解决的一个问题。到目前为 止,还没有任何一个j a v ao r 映射产品完整地实现了o d m g 规定的a p i ,a p a c h e 的对象关系桥( o b j e c tr e l a t i o n a lb r i d g e ,o j b ) 可能是实现程度上最高的。 e n t i t yb e a n ,j d o 随着j 2 e e 的诞生,持久化的市场上出现了一个新的竞争者:e n t i t yb e a n 自 1 9 9 9 年底发布的e j b l 1 起,e n t i t yb e a n 成为了j 2 e e 应用服务器中必须拥有的一 部份;在2 0 0 1 年e j b 2 0 引入本地接口之后,e n t i t y b e a n 得到了更加广泛的应用。 e n t i t yb e a n 是应用服务器厂商进行市场宣传时力推的技术,并在s u n 公司的j 2 e e 蓝图和p e t s t o r e 示例应用中也有着显赫的地位。然而,到2 0 0 2 2 0 0 3 年,e n t i t yb e a n 开始退出流行了,因为其局限性日益从很多项目中浮现出来。 e n t i t yb e a n 不仅没有促进o r 映射的发展,反而是有所妨碍。它鼓励奖持久 化的领域对象看作哑数据;它与透明持久化背道而行;而且实现和使用它都相当 麻烦。 2 0 0 1 年还有一种持久化技术悄悄诞生,那就是j d o ( j a v ad a t ao b j e c t s ,j a v a 数 据对象) 1 0 规范,它定义了”将j a v a 对象持久化道人和数据存储介质”的途径。j d o 产业在2 0 0 2 年有长足的发展,出现了很多商业j d o 实现,其中既有用于对象数据 库的,也有用于关系数据库的。但是j d o 并没有大红大紫,只是逐渐开始流行。 h i b e r n a t e 在2 0 0 2 年,一个新的竞争者受到了瞩目,那就是g a v i nk i n g 的h i b e r n a t e ,一 个开源的o r 映射工具,它的目标非常明确;在j d b c 之上提供一层薄薄的封装, 在提供完全透明持久化机制的同时又提供尽可能多的灵活性。与j d o q l 不同, h i b e r n a t e 查询语言( h q l ) 支持一些重要关系型概念,如连接,统计函数,批量取出 特定字段等因此h q l 提供了s q l 的大部分功能,同时又不必绑定到数据库表明 或字段名。截至2 0 0 4 年初,h i b e r n a t e 很有可能是目前j a v a 业内最流行的o r 映 射工具,它的每个版本都有超过3 万次的下载【5 j 。 7 重庆大学硕士学位论文1 绪论 1 4 课题来源及研究目的 课题来源于国家“8 6 3 ”计划资助项目一基于r f i d 的离散制造业制造执行系统。 本文是作者在该项目中所承担的“数据处理与访问中间件”模块的研发中,基于j a v a 程序语言中类映射机制,提出了持久层框架实现数据存取的解决方案。 该系统的设计和实现基于面向对象的开发方法,其中涉及对大量数据对象的 操作,这些对象中包含了大量的数据信息,如果采用传统的方法,为这些对象的 存储一条一条的写s q l 语句,将是一件工作量极大的工作,而且不利于系统的维 护与管理。同时该系统数据处理量巨大,实时性高,对性能要求极为苛刻,必须 通过高度优化的s q l 语句( 或存储过程) 才能达到系统性能设计指标;系统的数 据来源多样化,对于不同的数据,应能提供统一的调用接口,以保持系统的解耦 合度;系统的数据模型比较复杂,通常情况下不能对其进行任意的修改。因此在 架构中加入了一个持久层,为系统中的其他模块的数据操作提供了统一的函数接 口。 对持久层而言,就是实现在j d b c 基础上进行的又一次封装,实现通用的数据 库访问组件。 在业务逻辑层中直接访问关系数据库。 数据对象操作。 数据对象与数据库之间的映射和通信。 其实核心的就是异构体( 数据对象和数据库表) 之间的映射,因为建立好了这个 映射机制,我们就容易进行数据转换。本文设计的框架映射的目标不是提供具备 单元特性的透明持久化,而是面向“语句映射”的层面,这也是本文设计的着力点所 在。 1 5 论文主要工作及章节安排 1 5 1 论文主要工作 作者的主要工作分为四个阶段: 了解对象持久化技术 了解对象持久化技术是深入研究持久层框架的基础。探讨对象持久化技术研 究的本质,分析现有持久化技术的发展现状,并详细对各种持久化技术的优缺点 进行细致的分析。为进一步研究工作打下了坚实的理论基础。 深入研究具体o r 持久层框架的持久化机制 分析当前流行框架o r m 中采用的实现机制,包括数据的关联( 一对一,一 对多关联) ,数据的延迟加载,动态映射,事物管理以及多种缓存策略的实现等问 题。重点对o r m 映射工具h i b e r n a t e 的体系结构、映射机制、高级特性等进行了 重庆大学硕士学位论文1 绪论 详细的讨论,为面向m e s 持久层框架的设计提供了一定的借鉴。 面向m e s 的持久层框架的设计 结合m e s 应用特点及o r m 映射原理,提出了基于s q l 映射的持久层概 念,并进一步阐述这种观点的设计思想及基本原理,结合设计模式优化框架 的设计。 持久层框架的具体设计实现 根据设计思想和原理,设计实现具体的框架。最后,为验证本框架在m e s 项目应用中的可行性,将以前负责的项目模块进行重构,在实践中检验了本框 架的优点。 1 5 2 章节安排 按照研究的内容和完成的工作,本论文分为六章:第一章即本章为绪论,主 要对课题的研究背景进行了介绍,并对持久层框架的概念及其在m e s 应用的作用 进行了阐述,进而指出课题的来源及研究目的以及论文的主要工作;第二章主要 介绍常用的持久层解决方案,并对各应用方案的优缺点进行了分析,从而分析出 o r m 方案的可选性。第三章重点分析当前流行o r m 工具h i b e r n a t e 框架的实现技 术,从而对本设计的研究给出了一定值得借鉴和参考的思想。第四章具体分析了 框架设计的基本思路,参考m e s 应用的具体特点,对框架的基本思想,原理及主 要的设计模式进行了细致的分析。第五章详尽介绍了本设计的实现过程,包括d a o 框架组件的具体设计,s q l 映射框架的具体技术实现及映射技术的实现。第六章 对本文做的工作进行了总结,并分析了设计中存在的不足之处,提出了以后进一 步可做的工作。 9 2 2 创建对应业务类的数据类 在这种方法中,业务类的s q l 语句被封装在一个或多个“数据类”中,在存储 过程或者单独的数据类中硬编码s q l ,毕竟开发者熟悉关系数据库,理解s q l ,也 知道如何使用表与外键进行工作。此外,可以使用众所周知的d a o 设计模式对业 务逻辑隐藏复杂的j d b c 代码和不可移植的s q l 。 如图2 2 所示,在这种模式中,我们实现了业务逻辑与底层数据结构之间的分 离。底层关系数据的结构变化,可以较好地屏蔽在数据类这个层次,从而避免对 上层的业务逻辑造成影响。 而这种模型的缺陷也显而易见的,随着设计层次的增多,编码量的增加相当可 观。相对上一种混杂模式而言,系统结构上得到较大提升的同时,项目设计和开 发成本也响应增高。繁杂的j d b c 代码总得有人去编写,单纯依靠自身力量进行 设计和编码,这样的问题难以避免。 l o 重庆大学硕士学位论文2 现有持久层方案可选技术分析 目目目目 目一目 s q l i _ 业务类数据类 图2 2 创建对应业务类的数据类 f i g 2 2c r e a t ec o r r e s p o n d i n gd a t ac l a s s e so fb u s i n e s sc l a s s

温馨提示

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

评论

0/150

提交评论