




已阅读5页,还剩86页未读, 继续免费阅读
(计算机应用技术专业论文)基于or映射的对象持久层框架的设计及辅助开发工具的实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于o r 映射的对象持久层框架的设计及辅助开发工具的实现 摘要 摘要 如何持久化对象是面向对象分析和设计中都需要解决的问题。由于面向对象数据 库还不成熟,对象关系数据库虽然有所发展,但是出于应用传统以及方便与遗留系 统的集成的因素,关系存储模型仍然被广泛使用。因此在这种应用背景下,对象关系 阻抗不匹配的矛盾就显得更加突出。 本文首先介绍了将对象持久化在关系数据库时所面l 晦的问题以及对象关系阻抗 不匹配给应用系统的设计开发带来的消极影响,分析了对象模型与关系模型相互映射 的可能性及具体的映射理论。 为解决传统的对象持久化方法在设计上不通用的问题,本文详细介绍了n e t 平 台上一个基于0 恨映射理论的通用持久层框架的设计实现过程,该持久层框架为用 户提供了透明的对象持久化方法,并通过使用设计模式,使得该框架更具扩展性。本 文还详细介绍了持久层性能优化策略以及对对象并发事务管理的实现。 此外,由于对象阻抗不匹配对应用系统的消极影响贯穿于系统的设计开发阶段, 本文还详细叙述了基于持久层框架的辅助开发工具的设计及实现过程。通过o r 映 射的基本理论以及x s l t 转换技术,使开发人员可以将面向对象模型设计中的对象模 型直接转换为应用系统各层的代码或设计 通过o r 映射的理论及本文提出的设计思想,可以在软件系统的开发设计过程 中充分利用面向对象分析设计方法,使面向对象模型及思想贯穿于应用系统的设计及 开发阶段成为可能。 关键词:对象关系映射,持久层,框架,设计模式,x s l t 作者;郑琨 指导教师:徐汀荣 a b s t r a c t基于o r 映射的对象持久层框架的设计及辅助开发工具的实现 a b s t r a c t h o wt op e r s i s to b j e c t si sa l li s s u e w h i c hi sn e e dt os o l v ei no b j e c to r i e n t e da n a l y s i sa n d d e s i g n c o m p a r i n g 谢t l lo b j e c to r i e n t e dd a t a b a s e w h i c hh a sa p p e a r e dn o w a d a y sb u tn o t m u c hm a t u r ea n dp r a c t i c a l l y , r e l a t i o n a ld a t a b a s ei sw i d d yu s e dt os t o r ea n dr e t r i e v ed a t a b a s e d0 1 1r a t i o n a lm o d e l i n g h o w e v e r , t h e r ei sak i n do f u n - m a t c h i n gg a pb e t w e e no b j e c t o r i e n t e dm o d e l s a n dr a t i o n a lm o d e l s w i t hi t sl o we f f i c i e n c y , h i 曲c o s t sf o rm a i n t a i n i n ga n dl a c ko f a d a p t a b i l i t y ,t h e t r a d i t i o n a lw a yt op e r s i s to b j e c t si su n f e a s i b l ef r o mad e s i g np o 洫o f v i e w t 1 l i sp a p e r i n t r o d u c e st h ed e s i g na n d i m p l e m e n t a t i o no fag e n e r a l - p u r p e s ef r a m e w o r kf o ro b j e c t p c r s i s t i n gb a s e do n n e ti nd e t a i l ,w h i c hp r o d d e s u s e rw i t ht r a n s p a r e n t i t op e r s i s t o b j e c tw i t hr e l a t i o n a ld a t a b a s e t i 】i sp a p e rn o to n l yi n t r 烈l u c e st h ea p p l i c a t i o no f p r i m a r y f u n c t i o ns u c ha sc r u db u ta l s od i s c u s s e st h ew a yt oo p t i m i s tt h ef r a m e w o r ka n dt h e m a n a g e m e n to f t r a n s i t i o na n de o n c u n e h e yo f o b j e c t s 1 1 n e g a t i v ee f f e c tw h i c hi sr e s u l t e db yt h eo b j e c t - r e l a t i o n a li m p e d a n c em i s m a t c hi s a l lt h r o u g ht h ed e v e l o p m e n tc y c l e t i l i sp a p e ra l s oi n t r o d u c e st h em e t h o dt od e v e l o ps o m e u s e f u lt o o l sw h i c hc 锄g e n e r a t ec o d e sa u t o m a t i c a l l yb a s e do no b j e c tp e r s i s t i n gf r a m e w o r k , 4 w i t ht h e s ea i d sd e v e l o p e r sc a nt r a n s f o r mt h ed e f i n i t i o no f o b j e c tm o d e l st ot h ec o d e so r d e s i g nd i r e c t l y d e v e l o p e r sc a nc u tt h ec o s ta n ds h o r t e nt h et i m ew h i c hs p e n d so n d e v e l o p i n gi nt h i sw a y b y t h et h e o r yo f o rm a p p i n ga n dt h em e t h o di n t r o d u c e di nt h i sp a p e r , t h eo b j e c t m o d e l i n gc a r lb e u s e di ne n g i n e e r i n g , p r o g r a m m i n ga n di m p l e m e n t a t i o no f o b j e c t s p e r s i s t i n g , t h e r e f o r e ,t h eo b j e c to r i e n t e dd e s i g na n da n a l y s i sg a l lb et h o r o u g h l yu s e di n s o f t w a r ed e s i g na n dd e v e l o p m e n t k e y w o r d s :o rm a p p i n g ,p e r s i s t e n c el a y e r , f r a m e w o r k , d e s i g np a t t e r n , x s l t w r i t t e nb yz h e n gk u n s u p e r v i s e db yx ut i n gr o n g v9 5 7 0 0 3 苏州大学学位论文独创性声明及使用授权声明 学位论文独创性声明 本人郑重声明:所提交的学位论文是本人在导师的指导下,独立进 行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含 其他个人或集体已经发表或撰写过的研究成果,也不含为获得苏州大学 或其它教育机构的学位证书而使用过的材料。对本文的研究作出重要贡 献的个人和集体,均已在文中以明确方式标明。本人承担本声明的法律 责任。 研究生签名:盗坠些一日期: z 口。z ,f z 弓 学位论文使用授权声明 苏州大学、中国科学技术信息研究所、国家图书馆、清华大学论文 合作部、中国社科院文献信息情报中心有权保留本人所送交学位论文的 复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本 人电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文 外,允许论文被查阅和借阅,可以公布( 包括刊登) 论文的全部或部分 内容。论文的公布( 包括刊登) 授权苏州大学学位办办理。 研究生签名: 导师签名: 期:圣型:三:垒 期:垡:兰 基于o r 映射的甘象持久层框架的设计及辅助开发x - 具的实现第一章嘴言- 一 1 1 课题的研究背景 第一章前言 几乎所有的企业应用系统的设计和开发都要面临业务对象的永久存储问题,即使 应用程序终止,对象( o b j e c t ) 的状态依然被保留,以便在应用程序下一次执行时使 用或者实现不同应用程序之间的数据共享。要实现对象的持久化,首先必须理解对象 持久化的概念。 1 1 1 对象持久化的基本概念 持久性( p e r s i s t e n c e ) 是指对象的生存特性。如果对象的生存期跨越程序的执行 期则称该对象具有持久性。对象持久化技术的主要研究目标是在高级程序设计语言层 次实现对象持久性,有效地存储和管理持久对象( p e r s i s t e n t o b j e c t ) 。使程序员按同一 表达式语法访问暂态对象( t r a n s i e n to b j e c t ) 和持久对象,统一暂态对象空间和永久 对象空间i i j o 显然,对象持久化将改变对象的生命周期。在没有持久化机制的系统中,一个对 象的典型生命周期可分为创建、使用以及回收三个阶段。一旦系统中支持持久化,对 象的生命周期在创建和使用之后,可以通过持久化机制而延续。在s u n 公司提出的 j a v a d a t a o b j e c t s 2 0 ( j d o ) 规范中,定义了应用于数据存储事务的十种对象生存期 状态1 2 l 。持久化对象时除了要考虑对象中需要持久存储的信息外,还需要考虑持久对 象的存储机制。 1 1 2 持久化存储机制 数据库系统和文件系统是两种最常见的数据存储机制。文件系统使用无类型的字 符流存储持久数据,没有数据类型的构造和抽象能力。使用者必须按照规定的数据结 构来解释和使用系统中的数据,因此开发者必须了解文件的数据格式,这样就制约了 对文件系统的使用,应用系统开发者则更多地选择数据库系统作为持久化对象的存储 机制。 第一幸前言基于o r 映射的对象持久层框架的设计及辅助开发工具的实现 1 关系数据库 关系模型是目前最流行的数据库模型。由于关系模型有严格的数学基础,概念简 单清晰,非过程化及数据独立性程度高,因此关系型数据库系统的发展非常迅速,所 以,目前计算机厂商推出的数据库管理系统几乎都支持关系模型。 相对于以前的数据库模型,关系数据库模型已经在许多方面进行了改进,简化了 工作。在数据管理方面,完整性约束条件使得数据更易管理。关系数据库还有许多优 点:包括数据访问非常快、数据库结构易于修改、数据的逻辑化表示、数据完整性易 于实现、数据具有更高的准确性以及对标准s q l 的支持等 3 1 。 2 面向对象数据库h 面向对象数据库系统( o b j e c t o r i e n t e dd a m b 鹤es y s t e m ,o o d b s ) 的研究始于 8 0 年代中后期沿着不同的方向、采用不同的方法进行。它的优越性表现在:对复杂 对象的构造能力使得它对客观世界的模拟能力强、方式自然;封装性向开发人员和最 终用户屏蔽复杂性和实现细节,降低了数据库应用系统开发和维护的难度;继承性使 得数据库设计和应用编程成为可重用的。 从面向对象分析设计角度来看,面向对象数据库是实现对象持久化最理想的存储 机制。然而面向对象数据库目前仍然是一个发展很不完善的技术,还不成熟。目前面 向对象数据库产品的应用还很不普遍,主要应用在一些特殊的行业及特殊的应用领域 中,而在传统的商务处理中很少应用。 3 对象,关系数据库 对象关系数据库技术是在继承传统的关系数据库技术的基础上,增加面向对象 特征使面向对象技术与关系数据库技术紧密结合。对象关系数据库目前的产品有d b 2 的通用数据库版,i n f o r m i x 动态服务器的通用数据选件以及o r a c l e 的通用服务器等。 对象关系数据库虽然有所发展,但对象关系数据库的应用面并不是很广。 1 1 3 对象关系阻抗不匹配 在目前的企业应用系统开发中,一方面面向对象( o b j e c t - o r i e n t e d ) 的开发方法被 广泛地使用;另一方面,由于面向对象数据库技术的不成熟以及传统和性能的考虑, 2 基于o r 映射的对象持久屡框架的设计及辅助开发工县的实现第一幸前言 企业更多地选择使用关系数据库作为数据存储机制,并且这样的状况在短期内不太可 能改变,在这种应用背景下产生了对象关系阻抗不匹配 5 1 ( o b j e c t r e l a t i o n a li m p e x t a a e e m i s m a t c h ) 的问题。 1 对象关系阻抗不匹配的概念 阻抗不匹配是一个来自电子工程领域的术语,但是在软件世界中它被用来形容关 系和对象数据模型固有的不同1 6 1 。对象模型基于软件工程的一些原理,例如耦合、聚 合和封装,而关系模型则基于数学原理,特别是集合论的原理。两种不同的理论基础 导致各自有不同的优缺点。而且,对象模型侧重于从包含数据和行为的对象中构建应 用程序,而关系模型则主要针对数据的存储,因此将对象实例存储到关系数据库中将 会出现阻抗不匹配的问题。 2 对象关系阻抗不匹配对设计开发的影响 如图1 i 所示,对象关系阻抗不匹配对应用系统的消极影响贯穿于系统的设计阶 段和开发阶段。 设计阶段 : 开发阶段 图1 1 对象关系阻抗不匹配对设计开发的影响 在系统的设计阶段,用户通常要借助面向对象建模工具( 如u m l ) 对持久业务 对象进行建模,因而建立的模型是对象模型而不是关系模型。由于对象关系阻抗不匹 配,建立的模型并不能直接作为数据库设计方案,而需要依据一定的映射模式将对象 模型转换成数据库设计。 在系统的开发阶段,用户对业务层的持久对象进行持久化操作时,由于对象关系 第一幸前言 基于o r 映射的竹象持久层框架的设计度辅助开发工具的实现 阻抗不匹配,业务对象并不能直接存储到存储介质上。业务层的开发人员在持久化对 象时还必须了解对象在数据库中对应的存储结构,因而给开发人员造成了额外的负 担。 由上面的讨论可知,对象关系阻抗不匹配给应用系统的设计和开发增加了额外的 工作。此外,由于现阶段的应用系统的功能越来越多,复杂度越来越大,涉及到的业 务对象随之也越来越多。如果完全采用手工映射的方式,工作量会非常大,系统的适 应性也会很差且不容易维护。当业务对象模型发生变化时,将导致多个层次的设计发 生变化,开发人员将不得不重新修改设计。 为减少或消除对象关系阻抗不匹配给应用系统的设计开发带来的消极影响,研究 对象数据与关系数据之间通用的转换机制就非常有必要。这种机制实际上是面向对象 数据模型与关系模型之间的o r 映射川( o b j e c tr e l a t i o n a lm a 即i n g ,对象关系映射) 通过研究面向对象数据模型与关系模型间的映射方法,可以构造一个比较通用的对象 持久层来实现对象在关系数据库中的存储,从而避免重复开发存储和读取对象数据的 代码,因此具有实际的应用价值。 1 2 对象持久化方法研究 o r 映射的基本思想是既利用面向对象数据模型解决数据表达的问题,又利用关 系模型成熟的理论实现数据库底层功能。这一思路的特点是使两种模型各司其职,发 挥各自的优势,从而达到既能表达和处理复杂的数据,又能在数据库层次上采用成熟 技术的目的。 在面向对象的应用系统中,使用关系数据库持久化对象数据的方式可以分为如下 三种模式嘲: 1 混杂模式 混杂模式是实现对象持久化的最原始实现模式。这种模式将s q l 语句硬编码到 业务逻辑类的实现中。其优点是可以快速构建出系统的原型,也可以应用于小的系统 中;缺点是业务逻辑内直接耦合到关系数据库上,开发人员必须要了解底层关系数据 库的模式,不利于维护和扩展,且用于持久化对象的代码很难在其它系统中重用。 4 基于o r 映射的升象持久层框架的设计及辅助开发工具的实现 第一章前言 2 数据访问类模式 在这种模式中,对于每一个业务逻辑类,都有一个与之对应的数据访问类,这个 数据访问类实现了与之对应的业务逻辑类对象的持久化工作。这种方式同样只适宜于 构造小的系统。这种模式虽然实现了业务逻辑与底层数据结构之间的分离,但用于持 久化对象的代码仍然与具体的业务类相耦合,这些代码同样不太可能在其它系统中被 重用。 3 基于对象持久层框架的实现模式 该模式下所有的业务逻辑类通过通用的持久层框架实现持久化。这个持久层框架 独立于系统的其它模块。与上两种方式相比,持久层框架提供了一个通用的持久化对 象的机制,完全屏蔽了业务逻辑类与底层关系数据库之间的直接关联。业务逻辑类与 关系数据库之间没有直接的耦合关系,因此在其它的应用系统中可以被重用这种对 象持久层框架可以支持不周的关系数据管理系统嘲,不需要绑定在具体的关系数据库 上但采用对象持久层框架通常要以降低数据访问效率为代价。 在文献【8 】中s c o t tw a m b l e r 介绍了持久层的相关技术,并描述了c l a s s - t y p e a r c h i t e c t u r e 的结构和基于该结构的持久层的设计实现方法。c l a s s - t y p ea r c h i t e c t u r e 通过采用分层结构,降低了内部模块之间的耦合性按照文献【8 】描述的概念和技术 实现的持久层包括a n y o mr u d o y sp e r s i s t e n c el a y e r 和c o b r ao s sp c z s i s t c n c c l a y e r 。 文献【9 】介绍了对象关系访问层在现代企业级应用系统中所在的层次、作用以及 对象关系访问层的典型体系结构,并着重介绍了建立对象关系访问层所涉及到的问题 以及解决这些问题可采用的模式,并对这些模式的优缺点进行了详细的说明与比较。 文献【1 4 】描述了一种基于中间模式( m e e t - i n - t h e - m i d d l e ) 的透明对象持久层的实 现方法,这种映射方式不仅限于将对象模型转换成关系模型或将关系模型转换成对象 模型,而是两种模型可以实现互相转换或映射。 文献【砸l o 】【1 1 】【1 2 】讨论了在关系数据库中持久化对象相关的概念和一些实现上 的技术。主要包括类、对象、对象标识、继承以及对象间的联系等面向对象语义在关 系模型中的表达方式。 第一章前言基于o t r 映射的对象持久层框架的谩计及辅助开发工具的美观 文献 1 3 1 研究了从关系数据映射为对象数掘的一些规则和某些对对象的查询操 作如何转化为对关系的查询操作。 上面所有关于o r 映射的研究都没有关于这种映射是否完备的说明或者证明 由于对象模型与关系模型分别是两个差别很大的领域内的模型,因此要实现完备的面 向对象数据模型与关系模型的相互映射是非常困难的。 1 3 面向框架的开发方法 随着软件开发技术的不断飞速发展,工业化的软件复用已经从通用类库进化到了 框架( f r a m e w o r k ) ,它标志着现代应用开发已从程序复用进入到设计重用的阶段嗍。 软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同 领域的软件项目有着不同的框架类型。 一 框架是应用系统或子系统的可重用设计,是特定领域应用软件的半成品,它通过 综合特定领域应用系统结构及需求的共性荷形成框架具有如下几个特点: 1 框架提供了系统的结构和执行流程,程序员编写的代码等待框架去调用; 2 框架具有丰富的重用机制。框架可以从不同角度重用代码、设计和分析; 3 框架由一组互相协作的类构成,框架反映了应用系统的体系结构,具有部分 实现的特性f 阍。 从软件复用角度看,与普通构件库相比,框架在以下两个方面具有优势:框架 不仅仅是构件的简单集合,而是一个定义了领域通用的高层设计,因此进行基于框 架的应用开发时的同时也复用了设计,从而可以进一步节省开发工作量和时间;由 于框架双向控制的特性,它比传统的类库包含了更多功能,因而框架复用时需要编 写的代码更少。 1 4 课题的研究内容及意义 本文研究的主要内容是在对o r 映射理论进行深入研究的基础上,采用面向框 架的开发方法为建立在n e t 平台上的中小应用系统开发一个基于o r 映射原理的轻 量级持久层框架,并在此基础上设计辅助开发工具实现各层次代码的自动生成。最后 6 基于o r 映射的对象持久层框榘的设计及辅助开发工具的实现第一幸前言 通过一个实际的应用来验证本文的设计思路。本文所做工作的意义在于: 1 为n e t 平台上的中小应用系统提供一个通用的对象持久层框架,通过使用该框 架用户可以透明地持久化对象。 2 在实现对象关系持久层的基础上构建辅助开发工具,减少人工编码量。使开发 人员把精力集中在业务逻辑的开发上。 3 减少对象关系阻抗不匹配给应用系统的设计和开发带来的消极影响,提高开发 效率、降低应用系统的开发成本。 1 5 本文的组织结构 本论文余下章节的组织结构如下: 第二章在深入分析对象模型与关系模型的联系与差别的基础上,阐明了两者实现 映射的可能性,并详细介绍了对象向关系映射的基本内容及方法。 第三章分析了对象持久层框架及其辅助开发工具的设计目标以及具体的功能需 求。对对象持久层框架的整体层次结构进行了设计,并根据功能对辅助开发工具的模 块进行了划分。 第四章详细介绍了对象持久层框架的设计过程,主要内容包括用户编程接口及流 程设计、配置管理模块的设计、对象管理层的设计、o r 映射层及数据访问层的设计。 第五章介绍了对象持久层框架的性能优化策略以及对对象的并发事务管理的设 计及实现方法。 第六章详细介绍了辅助开发工具中各个功能模块的设计及实现过程,并给出了各 模块中关键算法的实现步骤。 第七章通过实现一个实际应用的持久管理模块,对对象持久层框架及其辅助开发 工具的功能进行了测试,并对本文提出的设计思想做了验证。该章详述了一个持久管 理模块的实现步骤,并对实验结果进行了总结。 7 第二幸o r 映射的基本斥理基于o r 映射的对象持久层框架的设计及辅助开发工兵的实现 第二章o r 映射的基本原理 要将对象持久化到关系数据库中,从理论上讲,首先要解决对象模型与关系数据 库中的关系模型相互映射和转换的问题。对象模型基于软件工程的一些原理,而关系 模型则基于数学原理,特别是集合论的原理。两种不同的理论基础导致两者各自有所 不同。为减少对象关系之间的阻抗不匹配,首先需要提供减少这种阻抗不匹配的理论。 2 1 对象模型与关系模型的基本概念 2 1 1 对象模型 对象是面向对象模型基本的数据表达单位,现实世界中所有的实体都可以被认为 是对象。在面向对象概念中,对象的定义包括状态和行为两个方面,对象的状态由一 组属性值( a t t r i b u t e ) 组成,对象的行为由一组操作构成,这组操作称为方法( m e i l l o d ) 对象之间还存在着复杂的联系,即对象之间的继承( i n h e r i t a n c e ) 、关联 ( a s s o c i a t i o n ) 、聚集( a g g r e g a t i o n ) 以及组合( c o m p o s i t i o n ) 关系。 2 1 2 关系模型 关系模型是基于记录的,记录是属性( a t t r i b u t e ) 的集合。属性是事物的特征的 抽取。每个属性有一个域( d o m a i n ) ,表示属性的取值范围。 关系l a t i o n ) 是描述对象的基本手段关系就是定义在其所有属性域上的笛卡儿 集的子集,用元组的形式表示。关系模式一般由属性序列和各属性对应的域组成。 2 1 - 3 对象模型与关系模型的联系 关系数据库的数据模型和记录集分别与面向对象的类和实例之间有相似之处,这 是两者之间可以实现映射的基础。关系数据库中的一个表可以与一个类对应,表中的 每列可以看作是类的属性。而表中的各个记录就如这个类中的实例化的对象。对象不 但有属性还有方法,因为对象的方法已持久化到类的定义文件之中,因此没有必要将 对象的方法持久化到数据存储机制。 暑 基于o r 映射的对象持久层框榘的设计厦辅助开发工具的实现第二幸o r 映射的基本原理 2 2 对象属性的映射 2 2 1 对象属性映射到列 由于类的属性与数据表的列存在着对应关系,因此可以实现互相映射。要指出的 是,并不是所有属性都需要持久化。例如账单类通常会有总价格属性。这个属性只是 在计算时使用,并不需要保存到数据库中,因此没有必要进行映射。 2 2 2 对象数据类型映射到域 在关系数据库中,域的使用不但提高了设计的一致性,而且优化了应用的移植性。 简单的域映射是非常容易实现的,仅仅需要替换相对应的数据类型和数据的尺寸。对 于基本的数据类型如整型、浮点类型来说,面向对象语言和关系数据库中的域一般存 在着一一对应的关系。 2 3 类映射到数据表 通过对象属性的映射方法可以对非常简单的,不存在复杂关系的类与数据表进行 一一对应映射。但是在面向对象系统中,类与类之间往往存在着复杂的继承关系。 继承问题可从根本上归结为如何解释在持久模型中组织继承的属性的问题。要将 继承映射到关系数据库中,通常有三种基本映射策吲“1 2 3 1 一继承树一表 一继承树表t ”1 ( o n ei n h e r i t a n c 圮t r e eo n et a b l e ) ,即将整个类层次映射为单个数 据库表方法。图2 1 表示了这种映射方式下,类层次结构所映射的关系数据结构。 l s t u d e n t l p r o f e s s o r i s t u d e n t n u m b e r is a l a r y l il 图2 1 一继承树一表继承映射模式 9 第二章o t 映射的鲞奉原理基于。瓜映射的对象持久层框架的设计及辅助开发工具的实现 在图2 1 中,表的主键为p e r s o n o i d 列,一方面可以作为表的主键,另一方面它 作为解决类与类之间复杂关系的一种机制而引入。此外,在映射过程中必须添加 o b j e c t t y p e 列来表明该行代表的是学生、教授还是其它类型的人员。 这种映射方法的优点是简单。因为所有子类对象对应的数据都可以在一张表中找 到,所以在更改角色时支持多态性;此外,使用这种方法进行有关所有具有继承关系 的类属性的操作也非常简单,因为只要根据o b j e c f 啪e 列就可迅速判断该类所在的 层次;此外,表中包含了所有信息,因此对于整个继承类的统一操作实现也很简单, 不必查找每个子类所映射的数据表分别操作。 这种策略的缺点在于:当在类层次结构中的任何地方添加一个新属性时,例如子 类增加了一个新属性时,必须同时将新属性添加到整个表中;另外,在对类的属性进 行修改时,除了会影响到该类外,还可能影响到继承层次结构中的所有类,这不但增 加了类层次结构中的耦合,并且浪费数据库中的空间;此外,由于0 b j e c t 聊e 列只 能描述单一角色,因此这种策略并不能真正实现多重继承。 2 3 2 一继承路径一表 一继承路径一表【”1 ( o n ei n h e r i t 跚- t c ep a t ho n et a b l e ) 方式,即每个数据表除了包含 自己的属性外还包含了它所继承的父类的属性。图2 2 描述了采取此模式时类所对应 的的关系数据结构。在图2 2 中,由于s t i l d t 和p f ;珞r 是具体类,因此既有与s t u d e n t 类对应的数据表又与p r o f e s s o r 类对应的数据表。对于p e r s o n 类,因为它是父类,没有 将其进行映射,它的属性只体现在子类之中。每个数据表都分另q 有自己的主键,如 s t u d e n t o i d 和p r o f e s s o r o i d 。 i s t u d e n t p r o f e s s o r i s t u d e n t n u m b e r s a l a r y l i s t u d e n t p r o f e s s o r p i l8 t u d e n t o i d p klp m f e s e o r o i d ln a m e f n a m e is t u d e n t n u m b a r l s a l a r y 图2 2 一继承路径一表继承映射模 基于o r 映射的对象持久层框架的设计及辅助开发工具的实现第二章o 肛映射的基本原理 这种映射方法最大的好处是它将所需的单一类的所有数据都只存储在一张表中, 表中包含了具体子类的所有信息,因此对于具体予类的操作实现简单。 这种映射方法的缺点在于;当修改祖先类时,必须同时修改它所有子类的表;例 如,如果要向p e r s o n 类添加高度和重量,就需要同时更新两个表,它会涉及很多工作。 , 其次对角色的更改可能造成主键冲突( 因为在不同表中的主键可能重复) 2 3 3 一类一表 一类一表i ”1 ( o n ec l a s so n et a b l e ) 方式为每个类创建一张表,它的属性包括o i l ) 及特定于该类的属性。图2 3 描述了采取这个方法类层次结构对应的关系数据结构。 这里生成了三个表,将p e r s o n o i d 作为所有三个数据表的主键。对于s t u d e n t 和p r o f c s s o r 表的p e r s o n o i d 既是表的主键又是与p e r s o n 联系的外键,这样就利用了关系模型映射 了对象的继承关系。 f s t u d e n t i p r o f e s s o r l i s t u d e n t n u m b e r ls a l a r yl f jl i p e r s o n i _ 一p kp e 鸺o n o t d l _ - 一 f n a m e l s t u d e n tp r o f e s s o r f l q s t u d e n t o i dp k f i q p 咖8 8 0 r o l d k u d e n | n u m b e lj s a i 町 图2 3 一类一表继承映射模式 这种方法的最大好处就是它能够最好地适应面向对象的概念及支持多态性,对于 对象可能有的每个角色,只需要在相应的表中保存记录。修改父类和添加新的子类也 非常容易实现,因为只需要修改或添加一张表。 这种映射方法也有存在着如下缺点:首先这种方式会导致数据库中有大量的表; 其次,访问或存取子类对象时必须访问多个表,因此读取和写入数据的时间比较长, 对所有继承类的统一操作也很困难。 由上述的讨论可以看出,以上三种方法各有优缺点,没有一种是完美的,要根据 系统的实际情况选择。三种继承映射模式之间的性能比较川如表2 1 所示: 第二幸o x 映射的基本原理基于o r 映射的对象持久层框架的设计茂辅助开发工具的实现 袭2 1 三种继承模式性能比较 考虑因素每个层次一张表每个具体类一张表每个类一张表 各个继承类的统一操作 容易中等中等困难 实现的难易程度容易中等 困难 数据访问难易程度容易容易中等,容易 耦合非常高高低 数据访问速度快快中等,快 对多态性的支持中等低 高 2 4 对象关系的映射 在面向对象的设计过程中,进行数据库设计时不仅要把对象的属性映射到数据 库,还需要把对象之间的关系映射到数据库中。对象之间的关系表达的是对象之间的 联系,即可用对象属性表达的一个对象与另一个对象之阿关系。关系数据库中的表与 表之问也存在同样的关系,这种相似性是将对象关系映射到关系数据库的基础。 因为数据库表的关系通过使用外键来实现和维护,因此无论对象是哪一种关系, 都可以将对象的关系映射到外键上根据对象之间联系的多重性,可将关系分为一对 一、一对多和多对多三种类型进行讨论。 2 4 1 一对一关系的映射 对于类之间一对一关系,可将外键放置在任意一边 7 1 。具体情况依赖于性能等因 素。例如某公司员工使用电脑的情况,要求员工最多使用一台电脑,电脑资源不能共 享但要保证资源被充分利用。 图2 4 一对一关系的映射 e m p l o y e e 类与c o m p u t e r 类一对一关系的映射如图2 4 所示。外键f k _ e i d 放在 c o m p u t e r 所对应的数据表上来维护两者之间的关系。而员工最多使用一台电脑的强 制多重性约束除了可以在关系数据库中通过唯一键约束及列的可空性约束来实现,还 可以在业务逻辑层中实现。 基于o r 映射竹对象持大层框架的设计置辅助开发工兵的实现第二幸o r 映射的基本原理 2 4 2 一对多关系的映射 对于类之间一对多的关系,通常也称为父子关系。“多”的一端被称为儿子,另外 一端被称为父亲。对于父子关系的映射,一般将外键放在儿子对应的表中川。另外, 通过外键的可空性可实现对关系的多重性约束,即儿子是否允许没有父亲。 图2 5 一对多关系的映射 图2 5 是员工类与t a s k 类之间一对多关系的映射。维护e m p l o y e e _ j f i t a s k 表之间关 系的外键f l _ e i d 放在儿子( t a s k ) 对应的数据表中。 2 4 3 多对多关系的映射 要实现多对多关系,需要引入关联表( a s s o c i a t i v et a b l e ) 。该表主要用于在关系数 据库中维护两个或多个表之间的关联研。可以看出,通过引入了关联表,将个多对 多的关系分解成为两个一对多的关系。 图2 6 多对多关系的映射 如图2 6 所示,c u s t o m e r 类和a c c o u n t 类存在着多对多的关系,其多对多的关系由 关联表a c , e s s e s 维护及实现。其中a c e e s s e s 通过两个外键f k与 维护c o i d f ka o i d c u s t o m e r 与a c c o u n t 表的多对多关系。 ,3 第二幸o l r 映射的基本原理 基于o r 映射的对象持久层框架的设计及辅助开发工具的实现 2 5 引用完整性与关系约束检查 如何维护企业综合管理信息系统中的数据完整性也是一个非常重要的问题,这对 数据挖掘和决策分析有着非常重要的意义。对象之间的关系反映了具体的商业规则, 因此将对象映射到关系数据库时,必须保证对象之间的关系定义并确保数据库上 数据的约束“7 l 。本节将讨论如何解决关系数据库中数据完整性问题。 2 5 i 关联、聚合及组合之间的差异 通过前面的论述可知,对于对象之间关联、聚集以及组合关系的映射,完全可以 使用相同的方法。从映射为数据库关系的角度看,关联和聚合、组合之间的唯一不同 是对象之间的绑定程度。对于聚合和组合,对整体所做的操作通常需要同时对部分进 行操作。 关联存在于两个对象之间,是一种较松散的联系。具有无向性和传递性的特点 对象之间基本上彼此独立,不影响到各个类的数据。如果对象之间的数据不存在耦合 关系,无需考虑数据完整性。 聚合表达了对象之间另外一种较强的联系,指定了整体与部分的联系。聚合没有 方向性。修改时采用级联修改( 即一旦父亲记录的数据修改,儿子记录也要进行修改) ; 插入或删除时采用忽略( 即允许单独删除父亲记录,只将儿子记录中相应的外键置为 空或新偷;允许单独插入父亲记录 组合是两个对象之间比较紧密的联系,组合表示某个对象是由其它对象组成的。 组合具有方向性,被组合对象和每一个参与对象之间存在着组合联系,而参与对象之 间彼此不存在联系。组合对象的数据完整性规则为:修改与删除时采用级联( 即一旦 父表中的相关数据被修改,子表中相应的数据也要自动修改;父表中的相关数据删除, 子表中相应的数据也应自动删除) ;插入时采用忽略( 即允许单独插入父亲记录) 。 上述规则通常特定于商业领域,但这种经验之谈往往在很多情况下出现 7 1 2 5 2 利用级联操作实现数据完整性 对关系数据库的数据完整性进行维护时,用户可以通过在触发器或在外键约束上 基于。爪映射的对象持久层框架的设计及辅助开发工具的实现第二幸o r 映射的基本原理 设定级联操作来实现。同样道理,要实现对象关系的完整性约束,也可以通过在对象 层次上通过设置级联操作或约束来实现数据完整性维护。因此本文采用的方法是将对 象的完整性规则分为几种基本类型:保存、更新以及删除级联,此外,是否允许孤儿 记录的出现也是数据完整性维护的一项内容。因此可以将关系完整性规则分为如下四 种基本类型: 1 保存级联( s a v ec a s c a d e ) , 保存对象时级联保存其关联对象; 2 更新级联( u p d a t ec a s c a d e ) ,更新对象时级联更新其关联对象; 3 删除级联( d e l e t ec a s c a d e ) ,删除对象时级联删除其关联对象; 4 删除孤儿删( o r p h a nd e l e t e ) 这种约束实际上用于维护数据库中父子表的数据 完整性,即是否允许孤儿记录的存在。 由上述的讨论可以知道:关联、聚集以及组合关系的完整性规则并没有严格的定 t 义,在某些具体的情况下还可能发生改变。例如有着关联关系的对象在一般情况下不 需要维护其数据完整性,但如果对象的数据存在着耦合关系其完整性规则变为级联更 新。因此用户可以根据具体的应用背景任意组合这四种级联操作来定义对象关系完整爹 性规则或约束,从而可以更加灵活地实现对对象关系完整性的维护。 2 6 本章小结 本章首先对对象模型与关系模型之间的差别和联系进行了分析,阐明了对象模型 向关系模型映射的基础。对象关系模型映射的内容主要包含如下几部分: 对象属性的映射包括对象属性映射成列及对象数据类型映射到数据库域。 类到数据表的映射,通常有三种映射模式即一继承树一表、一继承路径一表以及 类一表。三种方法各有优缺点,没有一种是完美的,要根据系统的实际情况选择。 对象关系的映射,可以将对象的关系映射到外键上。按照对象关系的多重性将关 系分为一对一、一对多以及多对多三种情况进行映射。 由于对象之间的关系由于绑定程度的不同,其关系完整性规则也不同。此外,由 于对象关系完整性规则并没有严格的定义,因此本课题中采用的方法是将对象的完整 性规则分为四种基本类型,用户可以组合上述几种规则来定义对象关系完整性规则。 | 5 三章需摩分析夏总体设计基于o r 映射的对象持久屡框架的设计量辅助开发工具的实现 3 1 设计目标 第三章需求分析及总体设计 通常在进行一项课题研究的时候,需要确立一个基本原则和研究目标,即课题最 后要做成什么。同样的道理,在进行系统的具体设计之前,应该先确立系统设计的目 标和设计的原则,这些和系统最终的用途是相关联的。 3 1 1 实现透明的对象持久化 对象持久层框架不仅将应用系统逻辑和数据存储逻辑分开,而且将所有数据存储 逻辑都封装在持久层框架的类中,对应用系统开发者隐藏了数据存储的实现细节应 用系统开发者只需通过持久层框架提供的接口,向对象发送数据存储或数据装载信息 就可以完成对象持久化的工作。这里的透明是指用户在对对象进行持久化操作时不必 了解底层关系数据库的类型或数据库操作的细节。 3 1 2 实现各层次代码自动生成 由第一章的讨论可知,由于对象关系阻抗不匹配,程序员需要做大量枯燥且重复 的映射及编码工作。因此设计辅助开发工具实现各个层次重复性代码的自动生成,减 少对象关系阻抗不匹配对应用开发的消极影响也是本次设计的目标之一。通过使用辅 助开发工具,可以使程序员将更多精力集中在业务逻辑的开发上,从而可以缩短软件 系统项目开发时间,提高项目的开发效率。 3 2 需求分析 在了解整体设计目标之后,就需要对对象持久层框架以及辅助开发工具的功能需 求进行具体的分析了,对象持久层框架以及辅助开发工具具体的功能需求如下面的章 节所述: 1 6 基于o r 映射的时象持久层框架的设计茂辅助开发工具的实现 第三章需求分析茂总体设计 3 2 1 对象c r i j d 操作 对象c r u d 操作是指对象的创建、读取、更新以及删除操作。理想情况下,用 户只需要发送s a v e 、d e l e t e 、r e t r i e v e 、u p d a t e 消息给持久层框架,就可以完成持久化 对象的操作。实现对象c r u d 操作是对象持久层框架最基本的功能需求 3 2 2 对象标识符管理 在面向对象设计开发中,设计者必须使用一种能唯一识别对象的符号来区分对 象,在面向对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025湖南师范大学第一批专任教师公开招聘96人考前自测高频考点模拟试题及答案详解(全优)
- 2025江苏徐州经济技术开发区管理委员会招聘编制教师40人考前自测高频考点模拟试题及参考答案详解
- 2025年广东惠州市公安局惠城区分局第二批辅警招聘48人考前自测高频考点模拟试题完整答案详解
- 宁夏宁东泰华热电有限公司公开招聘工作人员11人笔试历年参考题库附带答案详解
- 2025重庆设计集团有限公司市政设计研究院招聘6人笔试历年参考题库附带答案详解
- 2025重庆市大足区国衡商贸股份有限公司招聘大足区环境卫生工作人员招聘42人笔试历年参考题库附带答案详解
- 2025重庆合川区招聘劳务派遣员工1人笔试历年参考题库附带答案详解
- 2025辽宁大连市引导基金管理有限责任公司招聘4人笔试历年参考题库附带答案详解
- 2025北京大学党委办公室校长办公室招聘模拟试卷及答案详解(各地真题)
- 2025贵州毕节市大健康集团有限公司第十三届贵州人才博览会招聘工作人员第二批及笔试历年参考题库附带答案详解
- 2024年10月自考00144企业管理概论真题及答案
- 2025年艾梅乙技术工作规范考试题(附答案)
- 子宫颈炎症护理课件
- 2025呼和浩特粮油收储有限公司招聘18名工作人员考试参考题库及答案解析
- 5.1 延续文化血脉(课件) 2025-2026学年度九年级上册 道德与法治 统编版
- 新22J01 工程做法图集
- 眼科专业视野培训教材
- 青蓝工程教师成长档案
- 中建室内中庭墙面铝板、玻璃安装施工方案(改)
- 中秋佳节给客户的一封信(10篇)
- 学生心理健康档案表格
评论
0/150
提交评论