(计算机应用技术专业论文)对象关系映射模式研究.pdf_第1页
(计算机应用技术专业论文)对象关系映射模式研究.pdf_第2页
(计算机应用技术专业论文)对象关系映射模式研究.pdf_第3页
(计算机应用技术专业论文)对象关系映射模式研究.pdf_第4页
(计算机应用技术专业论文)对象关系映射模式研究.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(计算机应用技术专业论文)对象关系映射模式研究.pdf.pdf 免费下载

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

文档简介

对象关系映射模式研究 景海峰( 计算机应用技术) 指导教师:段友祥教授张国平副教授 中文摘要 面向对象方法是当今最流行的程序设计和开发方法,而关系数据库 则是应用最广的数据持久化方法,这就势必要将面向对象程序中需要持 久化的对象存储在关系数据库中。由于关系模式和对象模式本身的不匹 配,给直接在关系数据库中存储对象带来了不小的麻烦。为了解决对象 模型与关系模型在互相映射时存在的问题,本文对对象关系映射理论进 行了详细研究。首先,本文介绍了对象关系映射的基本概念、方法和步 骤,并简单分析了对象关系的映射策略。然后,为了解决根据具体需要 定量地选择对象关系映射方法的问题,本文提出了对象关系定量评价模 型,此模型包括输入、输出、映射方法定性评价矩阵和求解方法四部分。 在此模型中,本文通过层次分析法先将对象关系定性评价矩阵转化为定 量评价矩阵,再结合灰色关联分析求解,最终可以求得最佳的映射方法。 最后,本文提出了一种从关系数据库中提取对象及其关系的算法。此算 法的基本思想是:先将每个关系表映射成一个类,再找出每个类之间的 关联关系和继承关系,最后为每个类添加方法,并检查映射的完整性。 在查找类之间的关系时,本算法考虑了关联类和类的语义的影响;最终, 通过本算法,可以半自动化的从关系数据库中提取对象及对象之间的关 系。 关键词:对象模型,关系模型,持久化,对象关系映射 r e s e a r c ho ft h e0 b j e c tr e l a t i o n a lm a p p i n g j i n gh a i f e n g ( c o m p u t e r a p p l i c a t i o ne n g i n e e r i n g ) d i r e c t e db yp r o f e s s o rd u a n y o u x i a n ga n dz h a n gg u o - p i n g a b s t r a c t t h eo b j e c t - o r i e n t e dm e t h o d o l o g yi st h em o s tp o p u l a rm e t h o dt od e s i g n a n dr e a l i z et h ep r o g r a mn o w a d a y s ,a n dt h er e l a t i o n a ld a t a b a s ei st h em o s t f a r - r a n g i n gw a yt os t o r ed a t a t h e r e f o r e ,i t sn e c e s s a r yf o ru st os t o r et h e p e r s i s t e n to b j e c ti nt h er e l a t i o n a ld a t a b a s e h o w e v e r , i t sd i m c u l tt os t o r e o b j e c ti nt h er e l a t i o n a ld a t a b a s ed i r e c t l yf o rt h ei m p e d a n c em i s m a t c ho ft h e r e l a t i o n a lm o d e la n dt h eo b j e c tm o d e l 1 0s o l v et h ep r o b l e me x i s t e di nt h e m a p p i n go ft h er e l a t i o n a lm o d e la n dt h eo b j e c tm o d e l ,t h et h e o r yo fo b j e c t r e l a t i o n a lm a p p i n gi ss t u d i e di nt h i s p a p e r f i r s t l y , t h i sp a p e rg i v e s a d e s c r i p t i o no fo b j e c tr e l a t i o n a lm a p p i n ga b o u ti t s c o n c e p t s ,m e t h o d sa n d s t e p s ,a n dt h e na n a l y s e st h em a p p i n gs t r a t e g yo ft h eo b j e c ta n dr e l a t i o n a l m o d e ls h o r t l y s e c o n d l y , t h i sp a p e rp r e s e n t sam o d e lt os o l v et h ep r o b l e mo f c h o o s i n gm a p p i n gm e t h o dq u a n t i f i c a t i o n a l l y t h i sm o d e li n c l u d e s4p a r t s : i n p u t 、o u t p u t 、q u a l i t a t i v ee s t i m a t em a t r i xo f m a p p i n gm e t h o da n dm e t h o d st o s e t t l et h em a t r i x i nt h em o d e l ,t h i sp a p e rt r a n s f o r m st h eq u a l i t a t i v em a t r i xt o aq u a n t i f i c a t i o n a lo n eb ya h p , t h e ng e t st h eb e s tm a p p i n gw a yc o m b i n i n g w i t hg r e yc o r r e l a t i o na n a l y s i s f i n a l l y ,t h i sp a p e rp u t sf o r w a r daa r i t h m e t i ct o g e tt h eo b j e c t sa n dt h e i rr e l a t i o n s h i p sf r o mr e l a t i o n a ld a t a b a s e t h em a i ni d e a o ft h i sa r i t h m e t i ci s :i tt r a n s f o r m se v e r yr e l a t i o n a lt a b l et oac l a s si na d v a n c e , t h e nf i n d st h ea s s o c i a t i o na n di n h e r i t a n c er e l a t i o n s h i pb e t w e e nc l a s s e s ,l a s t l y i i i a c i d sm e t h o d st ot h ec l a s s e sa n dc h e c k st h ei n t e g r a l i t yo ft h em a p p i n g i nt h e p r o c e s so ff i n d i n gt h er e l a t i o n s h i po fc l a s s e s ,t h i sa r i t h m e t i cc o n s i d e r st h e i n f l u e n c eo fa s s o c i a t i o nc l a s sa n dt h em e a n i n go ft h ec l a s s i nc o n c l u s i o n ,w e c a ng e tt h eo b j e c t sa n dt h e i rr e l a t i o n s h i p sf r o mr e l a t i o n a ld a t a b a s eb yt h i s a r i t h m e t i ch a r f - r o b o t i c i z e d l y k e yw o r d s :o b j e c tm o d e l ,m l a t i o n a lm o d e l ,p e r s i s t e n to b j e c t , o r m 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取 得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论 文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得中国 石油大学或其它教育机构的学位或证书而使用过的材料。与我一同工作 的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了 谢意。 签名:星逸薛如。6 年争, e l 27 e t 关于论文使用授权的说明 本人完全了解中国石油大学有关保留、使用学位论文的规定,即: 学校有权保留送交论文的复印件及电子版,允许论文被查阅和借阅;学 校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手 段保存论文。 ( 保密论文在解密后应遵守此规定) 学生签名: 导师签名: 墨辱薛 f 中 尹月凹日 铲月乡口日 件份 川 印 赂f 中国石油大学( 华东) 硕士论文第l 章前言 第1 章前言 1 1 研究背景 现在大多数商业应用系统的开发都采用了面向对象技术,在设计阶 段采用统一建模语言u m l ( u n i t e dm o d e ll a n g u a g e ) ,在编码实现阶段 采用j a v a 、v i s u a l n e t 等。而当前大部分企业的数据是以关系数据库存储 的,这就势必要将面向对象系统的持久化对象存储在关系数据库中。 但是对象模型和关系模型之间存在着“阻抗不匹配”( i m p e d a n c e m i s m a t c h ) t l l 现象。对象模型是基于软件工程的一些原理,例如耦合、聚 合和封装等,而关系模型则是基于数学原理,特别是集合论的原理。蹰 种不同的理论基础导致各自有不同的优缺点。而且,对象模型侧重于用 包含数据和行为的对象构建应用程序;而关系模型则主要针对数据的存 储,并通过存储过程和内部的s q l 调用来操作数据。使用对象模型,是 通过它们的关系来访问对象,而使用关系模型,则通过复制数据来联接 表中的行。所以,当用对象模型构建应用程序,用关系模型对需要持久 化的数据进行存储时,两种模型的结合并不理想。为了解决这个不匹配 的现象,对象关系映射技术应运而生。对象关系映射,全称是o b j e c t r e l a t i o n a lm a p p i n g ,简称o r m ,是一种为了解决对象模型与关系模型之 间存在的互不匹配现象的技术。 1 2 对象关系映射的研究现状 对象关系映射的摹太思想是用面向对象模型解决数据表达的问题, 以关系模型实现数据的持久化。一般可以从两个方面对其进行研究,一 是映射策略的研究,一是映射实现的研究。映射策略是映射实现的核心 中国石油大学( 华东) 硕士论文第1 章前言 内容,具体研究成果如下。 s c o t tw a m b l e r 【2 1 1 3 1 非常详细的研究了对象模型到关系模型的映射, 主要讨论了对象之间的关联( a s s o c i a t i o n ) 、聚合( a g g r e g a ti o n ) 和继承 ( i n h e r i t a n c e ) 关系与关系数据库的映射方法,还提出了如何映射隐含信 息( s h a d o wi n f o r m a t i o n ) 、元数据( m e t ad a t a ) 和类的静态变量 ( c l a s s - s c o p ep r o p e r t i e s ) 的方法,并在讨论完各种映射方法之后,讨 论了数据库的性能优化问题。 w o l f g a n gk e l l e r 4 1 提出了评价每种映射方法的性能参数,然后简单 介绍了对象之间的关联、聚合和继承关系与关系数据库之间的映射方法, 并依据这些性能参数详细分析了每种映射方法的优缺点。 m a r k l f u s s e l l s l 首先讨论了对象模型和关系模型,然后又讨论了 如何实现对象模型与关系模型之间的映射,主要讨论了如何实现客户端 服务器c s ( c l i e n t s e r v e r ) 模式下的对象关系映射问题,并讨论了关 于并发控制的相关问题和解决方案。 王成良和杨祥陵d i 主要是结合一个实际工程应用讨论了各种映射策 略,并定性的描述了选择映射方法的原则。 c h i h c h i nl i u 和a r b e el p c h e n t t l 研究了如何从关系模型推导出对 象模型和对象间关系的相关问题,提出了在关系模型中发现对象间继承 关系的3 个规则和发现对象复杂属性的3 个规则,并提出了一种对象视图 推导语言( o b j e c tv i e wd e r i v a t i o nl a n g u a g e ) ,实现了在关系模型的基 础上建立对象视图,最后讨论了如何将对对象的查询操作转化为对关系 的查询操作。但是,在文献 7 中发现继承关系的3 个规则,存在着不严 谨的地方,本文将在第四章详细讨论。 卫春敏等【9 1 主要讨论了在对象关系映射中一对多映射时的完整性检 查,总结了对父表( 即主表) 和子表( 即附表) 的插入( i n s e n ) 、更新( u p d a t e ) 2 中国石油大学( 华东) 硕士论文第1 章前言 和删除( d e l e t e ) 操作的所有约束。 对象关系映射的实现方式,目前主要有以下几种:1 、对传统的r d b m s 进行扩充,在数据库内部实现0 r m ,其中以o r a c l e 公司的o r a c l e 9 i 和i b m 公司的u n i v e r s a ld b 2 为代表;2 、使用r d b m s 存储和读取对象数据,在 应用系统内部实现o r m 。 由于r d b m s 核心的不透明性,无法进行任意扩充,所以本文将重点 考虑o r m 在应用系统内部的实现。r d b m s 中存储和读取对象数据的方 式通常有如下三种:1 、在业务逻辑类中直接访问关系数据库( 如图卜l 所示) ;2 、通过专门的数据访问类访问关系数据库( 如图1 2 所示) ;3 、 通过对象持久层( o b j e ap e r s i s t a n c el a y e r ,以下简称o p l ) 实现对象关系 映射( 如图1 - 3 所示) 。 业务 口 口 口 业务逻辑类数据访问类 图卜2 0 r m 实现方式2 3 曰 目 一 一邑口 一 口口口吕p臣口 愀 口口口 口口口 中国石油大学( 华东) 硕士论文第l 章前言 v - 口 s q l 旦旦一面燃的一 口口 一 业务逻辑类 图1 - 3 0 r m 实现方式3 上述的前两种方法,由于耦合度高,无法重用,一般建议不采用。 所以,当今比较流行的是第三种方法,其中比较著名的如在j a v a i i 吾言上 使用的h i b e r n a t e ,现在已经推出了3 0 版本。关于对象持久层的研究成果, 如下所示。 s c o t t a m b l e r t 9 】研究- j o p l 的相关技术,详细分析了一个持久层的具 体需求,描述 c l a s s - t y p ea r c h i t e c t u r e 的结构和基于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 对应用系统内部的类进行分层,降低 了内部模块之间的耦合性。按照文献 9 描述的概念和技术实现的持久层 包括a r t 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 e r s i s t e n c el a y e r 。 何铮和陈志刚m 1 在简单介绍了对象关系的映射策略后,详细介绍了 c a s t o r 的特性和使用方法。其中,c a s t o r 是一个基于j a v a 的数据绑定和映 射的框架。 王甲民等”1 l 主要讨论了一个简单的持久对象层的设计,并讨论了在 持久层设计中可以提高性能的一些方法。 白天锐等1 2 】主要讨论了基于对象关系映射的持久层的分布式结构, 为i n t e r n e t 或者是分布式环境下连接不同的数据源做了一定的理论准备。 朱庆伟、吴宇红【1 3 1 和宋汉增、沈琳叫主要讨论t h i b e m a t e 的应用框架, 包括配置环境的设置,配置文件的书写,持久对象类创建等;然后又讨 4 中国石油大学( 华东) 硕士论文第1 章前言 论- j h i b e r n a t e 的运行机制。其中,h i b e r n a t e 是一个开放源代码的j a v a 对象 持久层轻量级封装框架。 史周军和叶晓俊提出了对象模型和关系模型的元数据模型,介绍 了基于元数据的对象关系映射,最后讨论了如何利用x m l ( e x t e n s i b l e m a r k u pl a n g u a g e ) 技术来实现此映射。现今,很多流行的对象持久层框 架,其映射文件都是通过x m l 来实现的。 1 。3 本文研究工作及章节安排 本文的研究内容主要包括: 1 、映射方法定量评价模型 本文在研究了对象模型到关系模型的映射方法,尤其是对象间关系 与关系模型的映射方法后发现,对象问的任何关系映射在关系模式中保 存都有很多种方法,而且每种方法都有其优缺点。那么,在实际映射中, 我们应该选择那种映射方法呢? 本文通过数学建模的相关理论建立了映 射方法定量评价模型,然后根据具体映射要求,运用a h p ( 层次分析法) 和灰色关联分析对模型输入进行处理,从而选择出符合映射具体要求的 映射方法。 2 、从关系模型中提取对象视图的算法 在仔细研究了对象模型到关系模型的映射后,本文提出了从关系模 型中提取对象视图的算法。大体思路是:首先,将每个关系表映射成一 个类;第二,在映射成的类中查找关联关系;第三,在映射成的类中查 找继承关系:第四,为映射得到的类添加方法:最后,对映射进行完整 性检查。通过本算法,最终可以实现从关系模型中半自动化的提取对象 视图。 论文全文可以分为以下几个部分。 5 中国石油大学( 华东) 硕士论文第1 章前言 第一部分是第一章,这部分主要介绍了课题的背景,o r m 的研究现状, 论文的研究内容及安排。 第二部分是第二章。这部分首先简单介绍了对象关系映射的相关概 念和实现步骤,然后详细讨论了对象关系映射时的“阻抗不匹配”现象, 最后,对对象关系映射的策略做了简单分析。 第三部分是第三章和第四章。第三章详细讨论了对象间关系与关系 模型的映射;然后设计了一个映射方法定量评价模型,并提出了解决此 模型的方法。第四章提出了一种在关系模型中提取对象模型的算法,并 将此算法与以前的算法进行了比较分析:然后,通过实例证明了此算法 的可行性;最后,简单讨论了此算法在实际项目中的应用方向。 最后,对本文的工作进行了总结,并对以后的发展进行7 展望。 6 中国石油大学( 华东) 硕士论文第2 章对象关系映射概述 第2 章对象关系映射概述 2 - 1 对象关系映射简介 对象关系映射”1 是指这样的一种操作:它试图将对象的状态映射到 关系数据库的数据上。 对象关系映射的重要作用”1 是:它消除了开发人员编写低级数据访 问代码的需要,这在某些应用中能够极大地提高工作效率,从而保证应 用代码专心地处理对象,以及能够导致创建一个可以支持多个用例的域 对象模型。 对象关系映射在通常情况下工作得很好,可以达到提高开发效率、 j 降低开发成本及问题复杂度的目的,但有时可能就并非是最好的解决方 案。对象关系映射是面向对象软件系统访问关系数据库最好的解决方案 的假设是有疑问的。对象关系映射既有优点,也有缺点,所有,在使用 它之前应该仔细考虑。 在一个采用关系数据库的面向对象软件系统中实施对象关系映射通 常包含如下三个步骤田: 映射:选择有效的映射策略( 即如何映射对象模型到关系模型) 将对 象模型向数据库关系模型映射,这就是类向数据库表的变换过程。需要 映射的除了对象的属性外还包括对象之间的关系,这些关系包括继承 ( 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 ) 。 实现映射:选择适当的映射框架或技术、工具在软件系统中实现上 一步中的映射,通常可以设计一个位于业务逻辑层和关系数据库之间的 对象关系映射层来完成对象和数据库间的转换。 啦化调整:为提供整体性能而对数据模型、对象关系映射及其实现、 7 中国石油大学( 华东) 硕士论文第2 章对象关系映射概述 对象模型等系统各方面进行适当的调整。 2 。2 对象关系映射存在的问题 一般将对象关系映射存在的问题称为“阻抗不匹配”现象,这种不 匹配现象主要有两方面的内容”,一是技术上的不匹配( t e c l l i l o l o g i c a l i m p e d a n c em i s m a t c h ) ,一是文化上的不匹配( c u l t u r a li m p e d a n c e m i s m a t c h ) 。 2 2 1 技术上的不匹配 如前文所述,对象关系映射是指这样的一种操作:它试图将对象的 状态映射到关系数据库的数据上。然而,关系模型和对象模型有着很大 的不同。关系数据库是基于排序和数据检索的数学理论,关系数据库设 计的目标是规范化数据以消除数据冗余。而对象模型是用面向对象的观 点来描述现实世界实体( 对象) 的逻辑组织、对象间限制、联系等的模 型。下面本文将简单介绍一下关系模型和对象模型。 1 、关系模型简介 关系模型是建立在严格的数学概念的基础上的。关系模型主要由关 系数据结构、关系操作集合和关系完整性约束三部分组成【懈l 。 关系模型的数据结构非常单一。在关系模型中,现实世界的实体以 及各实体之间的联系都用关系来表示。一般看来,关系模型中数据的逻 辑结构是一张二维表。 关系模型的操作被称为关系代数操作( r e l a t i o n a la l g e b r a o p e r a t i o n ) l t t l 。其操作可以分为两类:关系专用操作和集合操作。其中关 系专用操作包括选择( s e l e c t ) 和投影( p r o j e e t ) ;集合操作包括;连接 ( j o i n ) 、除( d i v i d e ) 、并( u n i o n ) 、交( i n t e r s e c t i o n ) 、差( d i f f e r e n c e ) 。 8 中国石油大学( 华东) 硕士论文第2 章对象关系映射概述 除关系操作外,还可以用谓词演算来表达关系的操作,称为关系演算 ( r e l a t i o nc a l c u l u s ) 。关系演算分为元组演算和域演算。 关系模型主要包括三类完整性约束:实体完整性、参照完整性和用户 自定义的完整性。其中,实体完整性和参照完整性是关系模型必须满足 的完整性约束条件,而用户自定义的完整性是针对于某一个具体的关系 数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义 要求。 关系模式的优点是: 关系模型提供单一的数据结构形式,具有高度的简明性和精确性。 各类用户都能很容易地掌握和运用基于关系模型的数据库系统,使得数 据库应用开发的生产率显著提高。 关系模型的逻辑结构和相应的操作完全独立于数据存储方式,具有 高度的数据独立性。用户完全不必关心物理存储细节。 关系模型使数据库的研究建立在比较坚实的数学基础上。关系运算 的完备性和设计规范化理论为数据库技术的成熟奠定了基础。 关系模式的缺点: 憾述对象语义的能力较弱。现实世界中包含的数据种类和数量繁多, 许多对象本身具有复杂的结构和涵义,为了用规范化的关系描述这些对 象,则需对对象进行不自然的分解,从而在存贮模式、查询途径及其操 作等方面均显得语义不甚合理。 模型的可扩充性较差。新关系模式的定义与原有的关系模式相互独 立,并末借助已有的模式支持系统的扩充。关系模型只支持元组的集合 这一种数据结构,并要求元组的属性值为不可再分的简单数据( 如整数、 实数和字符串等) ,它不支持抽象数据类型,因而不具备管理多种类型数 据对象的能力。 9 中国石油大学( 华东) 硕士论文第2 章对象关系映射概述 模拟和操纵复杂对象的能力较弱。关系模型表示复杂关系时比其 它数据模型困难,因为它无法用递归和嵌套的方式来描述复杂关系的层 次和网状结构,只能借助于关系的规范化分解来实现。过多的不自然分 解必然导致模拟和操纵的困难和复杂化。 2 、对象模型简介 面向对象模型( o b j e c t o r i e n t e dm o d e l ) 是近几年来迅速崛起并得到发 展的一种模型,该模型是在吸收了以前各种概念模型优点的基础上并借 鉴了面向对象的设计方法而建立的模型。这种模型具有更强的表示能力, 特别是在表示非传统的数据领域如c a d 、工程领域、多媒体领域等复杂 数据关系领域具有极强的表达力。1 1 3 l 面向对象模型是用面向对象观点来描述现实世界实体( 对象) 的逻 辑组织、对象间限制、联系等的模型。一系列面向对象核心概念构成了 面向对象模型的基础。概括起来,面向对象模型的核心概念有对象、封 装、类、继承、消息。 ( 1 ) 对象( o b j e c t ) 与对象标识( o i d ) 对象是客观物体或概念性东西的抽象表述n 9 1 ,是一组数据结构和在 这组数据结构上的操作的程序代码封装起来的基本单位。对象之间的界 面由一组消息定义。每个对象都存在一定的状态,并有内在的标识。一 个对象包括以下几个部分: 属性集合:所有属性合起来构成了对象模型的数据结构;属性描述 了对象的状态、组成和特性;一个对象的属性可以是一个对象,即对象 可以嵌套,这种嵌套可以继续,从而组成各种复杂对象。 方法集合:方法描述了对象的行为特性;方法的定义包括两部分, 一是方法的接口,二是方法的实现;方法的接口用以说明方法的名称、 参数和结果返回值的类型,也称之为调用说明;方法的实现是一段程序 i o 中国石油大学( 华东) 硕士论文第2 章对象关系映射概述 编码,用以实现方法的功能,即对象操作的算法。 消息集合;消息是对象向外提供的界面,消息由对象接收和响应。 每个对象都有一个惟一不变的标识称为对象标识( o i d ) 。对象通常 与实际领域的实体对应。实际中,实体中的属性值可能随时间的推移而 发生改变,所以对象的部分( 或全部) 属性、对象的方法会随时间的推 移发生变化,但每个实体的标识却保持不变。两个对象即使属性值和方 法都完全相同,如果o i d 不同则认为是两个不同的对象,它们只是值相 等而已。对象标识的概念比程序设计语言或传统数据模型中所用到的标 识概念更强。下面是常用的几种标识。 值标识;用值来表示标识对象。例如,工号为2 0 0 1 0 8 2 0 2 1 1 0 标识 了职工号为1 1 0 的职工( 张红) 是于2 0 0 1 年8 月来部门号为2 0 2 的部门 工作的。 外标识:用一个名字来表示标识。例如,程序变量使用的就是名标 识,程序中的每个变量被赋予一个名字,变量名惟一地标识每个变量。 内标识:以上两种标识是由用户建立的,内标识则建立在数据模型 或程序设计语言中,不要求用户给出标识。例如,面向对象数据库系统 使用的就是内标识。 对象标识具有永久性的含义,即一个对象一经产生,系统就给它赋 予一个在全系统中惟一的对象标识符,直到它被删除。对象标识是由系 统统一分配的,用户不能对对象标识符进行修改。对象标识是稳定的, 它不会因为对象中某个值的修改而改变。 ( 2 ) 封装( e n c a p s u l a t i o n ) 对象模型的一个关键概念就是封装。每一个对象是其状态与行为的 封装,其中状态是该对象属性值的集合,行为是在对象状态上操作的集 合,操作也称为方法。封装是对象的外部界面与内部实现之间实行清晰 中国石油大学( 华东) 硕士论文第2 章对象关系映射概述 隔离的一种抽象,外部与对象的通信只能通过消息,这是对象模型的主 要特征之一。 封装的意义在于将对象的实现与对象应用互相隔离,从而允许对操 作的实现算法和数据结构进行修改,而不影响接口,不必修改使用它们 的应用,这有利于提高数据独立性。由于封装,对用户而言这些实现是 不可见的,这就隐藏了在实现中使用的数据结构与程序代码等细节。此 外,对象封装后成为一个自含的单元,对象只接受已定义好的操作,其 他程序不能直接访问对象中的属性,从而可以提高程序的可靠性。 ( 3 ) 类( c l a s s ) 类是对象的模板,对象是类的实例( i n s t a n c e ) 所以,我们一般将具 有相同属性、方法的对象集合在一起称为类,而此时类中的对象称为实 例。1 。类属性的定义域可以是任何类,既可以是基本类,如整数、字符 串、布尔型,也可以是包含属性和方法的般类;特别地,一个类的某 一属性的定义也可以是这个类自身。 ( 4 ) 继承( i n h e r i t a n c e ) 继承分为单继承和多继承。一个子类只能继承一个父类的特性( 属 性、方法和消息) ,称为单继承:若一个子类能继承多个父类的特性,称 为多继承。单继承的层次结构图呈树形,多继承的层次结构图是一个带 根的有向无环图。 ( 5 ) 消息( m e s s a g e ) 由于对象是封装的,对象与外部的通信一般只能通过显式的消息传 递,即消息从外部传送给对象,存取和调用对象中的属性和方法,在内 部执行所要求的操作,操作的结果仍以消息的形式返回。 对象模型提供了丰富的语义和自然的表达方式,方便直接地表达了 应用领域的事务和它们之问的联系。所以,对象模型能描述复杂的现实 1 2 中国石油大学( 华东) 硕士论文第2 章对象关系映射概述 世界,具有较强灵活性、可扩充性与可重用性0 8 1 。 但是,与关系模型相比,对象模型缺乏一个完善的理论体系指导, 还没有公认的形式化描述。因此,对象模型更多地带上了领域的印记, 在不同的领域有着不同的表现。 3 、技术上的。阻抗不匹配。现象总结 综上所述,技术上的不匹配的关键问题是如何用关系数据库的表表 示对象的下列属性1 2 2 l : 对象的唯一性 对象模型中的对象都必须有自己唯一的标识符,以区别与其它对象。 两个对象可以拥有相同的状态,但是它们必须具有不同的对象标识符。 同样的,关系数据库中每个表的行必须可以相互区分,这种区分是通过 每个表的行必须具有的主码来实现的。所以,映射对象的唯一性问题就 是,如何在关系数据表的主码与对象标识符之间建立映射。 对象的状态( 属性) 对象是有状态的实体,当进行对象关系映射时,通常会将对象的状 态,即对象的所有属性的值存储在关系数据表中。在对象模型中,对象 的简单属性与关系数据表的列之间可以简单的进行相互转换,例如j a v a 的s t r i n g 类型与s q ls e r v e r 2 0 0 0 的v a r c h a r 类型之间。但如果对象的属 性是复杂类型的话,问题就要复杂的多。因为关系数据库数据类型简单、 固定,它只能处理简单数据类型( 数字、字符串、日期、布尔、货币等) 。 面向对象方法可以方便的构造各种新类型,而关系数据库不提供增加用 户定义数据类型的手段。 对象的行为 对象是数据和行为的集合体,对象的行为是与对象的数据有关联的。 而关系数据库中的存储过程并未与特定的数据相关联,即关系数据库不 1 3 中国石油大学( 华东) 硕士论文第2 章对象关系映射概述 支持对象的数据和行为的封装。所以,虽然对象中的数据可以直接存储 在数据库中,但是对象的行为是很难存储于关系数据库中的。 对象间的关系 对象间存在着复杂的关系,这些关系包括:继承、关联、聚合和复 合。利用对象模型可以简单建立的这些关系。在关系数据库中就需要消 耗大量的时间和精力进行维护,并带来了极大的复杂性。例如,在对象 模型中简单的多对多关系在关系数据库中就需要复杂的外键管理策略。 2 2 2 文化上的不匹配 文化上的不匹配,主要是指数据库专家和面向对象专家之间的关于 该如何建立一个新系统的一种争论。数据库专家认为应该使用数据库驱 动建模,而面向对象专家则认为应该使用对象驱动建模。 采用数据库驱动建模时,数据模型由数据库模式驱动。这种方式基 于目标数据库的特征来创建一个数据库模式,可以用于有效地描述要被 持久保存的数据。这种方式的最大优势就是能够提供更好的性能。 而如果采用对象驱动建模,关键问题则是根据需求,找出系统的对 象及其之间的关系。这种方式韵优点包括:能够更加形象化的描述系 统;具有更大的自动化潜力,或许,可以使用一个建模工具自动生成 r d b m s 模式,并生成高级编程语言程序代码;具有更大的可移植性, 由于对象模型与数据库之间的一个抽象层是必不可少的,所以不用修改 对象模型就能够使该应用适用于不同的数据库。 当然,对于不同的软件项目,应该根据具体情况进行仔细分析比较, 从而确定是采用数据库驱动建模还是对象驱动建模,甚至是两者的结合。 1 4 中国石油大学( 华东) 硕士论文 第2 章对象关系映射概述 2 3 对象关系映射策略分析 在本文的2 2 1 中提到,对象关系映射的关键问题是如何在关系数据 库中存储对象的标识符、属性、行为和关系。对象的标识符和属性( 此 处指简单属性,复杂属性可以转化为对象关系的映射) 的映射比较容易 实现;虽然对象行为的映射比较难实现,但是,对象的行为是静态的, 一般不会发生变化,所以,一般情况下不用对其进行映射。所以,对象 关系映射的关键问题就可以简化为对象之间的关系如何存储在关系数据 库中,本文将在第三章详细讨论此问题。 在对象关系映射的研究中,有时候也需要用对象模型来表示关系模 型。例如,一个企业已经具有了一个关系数据库管理系统,并基于此关 系数据库建立了企业信息管理系统,积累了大量的历史数据,这时,要 在此关系数据库的基础上开发一个新的面向对象系统,这里,我们就有 可能要用对象模型来表示关系模型。虽然对象模型的语义比较丰富,可 以很容易的表示出关系模型,但是,如何在一个关系数据库中提取对象 模型,并根据此关系数据库中的数据找出提取对象之间的关系,便是一 个值得研究的问题,本文将在第四章详细讨论此问题。 综上所述,对象关系映射策略应该包含两个方面:一是对象到关系 的映射策略,它解决如何在关系数据库中存储对象的问题;一是关系到 对象的映射策略,它解决如何从关系数据库中提取对象及其关系的问题。 但是,无论是哪种映射策略,都是为了解决如何能更好的实现用关系数 据库实现对象持久化存储,用对象模型实现数据表达的问题。 2 4 本章小结 本章首先简单介绍了对象关系映射的一般概念和实现步骤。接着, 详细讨论了对象关系映射存在的问题,即所谓的“阻抗不匹配”现象, 1 5 主望互塑查里! 兰奎! 塑主丝壅 兰! 兰翌墨叁墨堕墅坠 在本节中本文简单介绍了关系模型和对象模型。最后,本文简单分析了 一下对象关系映射的策略,并指出了本文研究的重点,即本文的第三章 和第四章的内容。 本章内容是介绍对象关系映射的基础。 1 6 中国石油大学( 华东) 硕士论文第3 章对象到关系的映射 第3 章对象到关系的映射 关系数据库管理系统是以二维表为基本管理单元的,所以在使用关 系数据库的面向对象软件应用中对象模型最终是由二维表及表问关系来 描述的。换言之,对象模型向数据库中关系模型的映射就是类在数据库 的关系表中持久化的过程。由于对象模型与关系模型之间的“阻抗不匹 配”现象,在将对象模型映射到关系模型时,就必须解决这种不匹配现 象。在本文2 3 节中已经分析,将对象模型映射到关系模型的关键问题 是如何将对象之间的关系存储在关系表中。所以,本章将着重描述对象 之间的关系与关系表的映射方法。 为了描述方便,本文在定义映射规则之前,首先定义一些符号。 类a 可以用蠲元组表示为: 。其中,o n a 表示类a 的名称:o i d 表示类a 的类标识符;a t t r 表示类a 的所有属性的集 合,即a 啦= f 1 1a 是类a 的一个属性,且a 的名称是a n a ;m e t h 表示类a 的 所有方法的集合,即m e t h = m i m 是类a 的一个方法,且m 的名称足m 。 。 关系模式,即表b 也可以用四元组表示为: 。 其中,t n a 是表b 的名字;p k 是表b 的主码的集合;c o l 是表b 所有列的集 合,即c o l - - - - c l c 是表b 的一个列且列名为c 。) ;p r o c 是表b 所有用户自定 义的存储过程和函数的集合,即p r o c = p l p 是表b 的一个用户自定义函数 或过程且过程函数名为p 。】。 本文定义:运算符号为字符串的连接符;运算符号j sj 为求长度符号, 即表示集合s 中元素的个数;符号亳表示恒等于;a 弓b 表示命题公式 a 与命题公式b 不可能同时成立;谓词o ( a ) 表示a 是一个类;谓词 i n h e r i t ( a ,b ) 表示类a 与类b 有直接继承关系,且类a 是类b 的父类: 1 7 中国石油大学( 华东) 硕士论文第3 章对象到关系的映射 谓词r ( , ) 表示类a 和类b 具有m 对n 的关联关系,m , n = 0 、l 、2 、。 3 1 对象间关系的映射规则 对象之间的关系主要包括继承、关联、聚合和复合。本文将其分为 两大类关系进行讨论,一类是继承关系,一类是除继承关系以外的其它 关系。 在讨论对象间关系的映射规则时,本文将按照下面的顺序来讨论: 首先定义此映射规则,然后从性能、扩展和可维护性、存储冗余、查询 处理四个方面对每种映射方法进行评价,最后用实例对每种映射规则进 行说明。 3 1 1 继承关系的映射规则 在本文中讨论的继承关系主要是单继承,因为在实际的应用开发中, 很少遇到多继承的情况。 为了表述方便,本文中以图3 - 1 所示的继承关系为例进行说明。其 中i n h e r i tf p e r s o n ,c u s t o m e r ) i n h e r i t ( p e r s o n ,e m p l o y e e ) 。 根据文献 2 、 3 、 4 和文献 5 提供的资料,将继承关系映射到 关系表中,主要有四种方法:将整个继承关系映射到一个关系表中, 本文称之为o n e t r e e o n e t a b l e _ s e h e m a ;将每个类映射到一个关系表中, 本文称之为o n e c l a s s o n e t a b l e _ _ s c h e m a ;将继承关系的每个分支映射到 一个关系表中,本文称之为o n e p a t h o n e t a b l es c h e m a ;将整个对象存 储在b l o b s ( b i n a r yl a r g eo b j e c t s ) 中,本文称之为b l o b s _ _ s e h e m a 。下 面我们将分别讨论这四种方法。 1 8 中国石油大学( 华东) 硕士论文第3 章对象到关系的映射 图3 - i 继承关系示例图 在讨论这四种方法之前,我们先讨论一下如何将一个完整的类映射 到关系表中,本文称之为c l a s s 。_schema c l a s ss c h e m a 。一个类a : 映射到一个关 系表a : ,映射f 1 满足以下约束:o n a = t n a ,o l d p k ,对v a e a t t r 都j c c o l 与之相对应,且c n a = a n a 。 对于任意的类a 、b 、c ,l n h e r i t ( a ,b ) ,i n h e r i t ( a ,c ) ,则这四种映 射模式的定义如下。 1 、o n e t r e e o n e t a b l e _ s c h e m a 定义:将整个继承关系映射为一个表a : , 映射规则f 2 1 满足以下约束:t n a = a ,o i d a p k ,对v a a t t r a o a t t r i 8 u a t t r c u s a 都3c e c o l 与之对应,c 可以取n u l l 值。其中,s a 代表映 射整个继承关系时需要保存的隐含信息,这里主要是指一个t y p e 字段, 来代表映射的类的类型。 此模式的性质如下。 性能:因为在读和更新对象时,只需要对一个关系表进行操作,所 1 q 中国石油大学( 华东) 硕士论文第3 章对象到关系的映射 以此模式有较好的读和更新性能;但是,在将新对象插入数据库时需要 多写入很多无用字段,所以此模式写数据的能力一般;当要删除一个对 象时,只需要删除关系表中的一条记录,所以相对比较简单。 扩展和可维护性:由于映射直观容易,只要是继承层次不是太深, 此模式的维护代价也不是太大;但是如果对象或者继承关系发生变化, 就要对表结构进行更改,这样可能会造成比较大的维护代价;总体来说, 可扩展性不强。 ;p e r s o 缸 p kp e i s o e l i d i

温馨提示

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

评论

0/150

提交评论