




已阅读5页,还剩53页未读, 继续免费阅读
(论文)对象关系映射射(ORM)的研究与基于C_NET的部分实现.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上海海事大学 硕士学位论文 对象关系映射(ORM)的研究与基于C#.NET的部分实现 姓名:钟云 申请学位级别:硕士 专业:计算机软件与理论 指导教师:钱晓江 20060601 摘要 Y1 0 0 7 8 4 2 随着软件的复杂度和规模不断增长和扩大,业务数据量也在不断增长,各种商业 系统对于数据库的依赖程度也越来越强。由于面向对象在前台应用软件的广泛应用, 并且在持久化对象的存储机制中占主导地位的是关系数据库,所以需要套完善的对 象关系映射机制将内存对象的数据持久化到关系数据库中,因此对象关系映射已成 为目前商业软件开发中重要的一部分。 面向对象的软件使用关系数据库作为其存储机制意味着数据在对象模型和关系 模型问的转换。对象模型基于软件工程的一些原理,而关系数据模型则基于数学原理, 两种模型理论基础的不同导致了它们之间的“阻抗不匹配”( O b j e c t R e l a t i o n a l i m p e d a n c em i s m a t c h ) ,使用关系数据库存储持久化对象时就需要进行“对象关系映 射”。对象关系映射是指这样的一种操作:它试图将对象的状态映射到关系数据库的 数据上,以便提供透明的持久性。 本文主要研究了以下几个方面: 对象关系映射中的理沦背景,介绍了对象模型和关系模型,以及两者映射时会遇 到的问题。 类与数据库表的映射方法,对象之间关系的映射的具体策略,这是对象关系映射 的变换规则。 对象关系映射的各种解决方案,技术,这是对象关系映射的具体实现方法。主 要的三类技术分别是:基于反射的,基于代码生成的,基于字节码操纵的。 介绍了N H i b e r n a t e ,N H i b e m a t e 是I - I i b e m a t e 的N E T 平台上的版本。H i b e r n a t e 是 现阶段O R M 产品中比较成功的一个。 提出了自己的一种映射方法,通过使用c 挣N E T 中的属性( A t t r i b u t e ) 来进行映射。 使用属性进行映射,相比较H i b e r n a t e 中使用X M L 文件进行映射而言,使得映射 更为方便,更加直观,不容易出错。本文试着给出了通过属性映射的部分实现。并且 使用例子进行了测试。 关键词:对象关系映射,对象持久化,面向对象,关系数据库,O R M R e s e a r c ho fo b j e c t r e l a t l o n a lm a p p i n g ( O R M ) a n ds o m ei m p l e m e n t a t i o nb a s e do nC 群N E T A b s t r a c t F o l l o w i n gt h ec o n t i n u e dg r o w t ha n de x p a n s i o no fs o f t w a r ec o m p l e x i t ya n d s c a l e ,t h eq u a n t i t yo fb u s i n e s sd a t ah a sb e e ns t e a d i l yg r o w i n g ,m a k i n ga l lb u s i n e s s s y s t e m se v e rr e l y i n go nd a t a b a s e s B e c a u s eo b j e c t o r i e n t e dt e c h n o l o g yI sw i d e l y u s e di nf r o n ts o f t w a r ea p p l i c a t i o n a n dr e l a t i o n aJd a t a b a s ei sd o m i n a n ti nt h e s t o r a g em e c h a n i s mo fo b j e c t s p e r s i s t e n c e ,w en e e dam e c h a n i s mw h i c hc a nm a p t h ed a t ao fo b j e c t sw h i c hr e s i d e n ti nm e m o r yt or e l a t i o n a ld a t a b a s ep e r s i s t e n t l y S o t h e o b j e c t r e l a t i o n a Im a p p i n g i st h e i m p o r tp a r t o fc o m m e r c i a ls o f t w a r e d e v e l o p m e n t O b j e c t o r i e n t e dp r o g r a m su s i n gR D B M Sa st h e i rs t o r a g et e c h n o l o g ym e a n s y o uh a v et ot r a n s f e rd a t ab e t w e e nt h eo b j e c t - o r i e n t e dv i e wo fab u s i n e s sm o d e l a n dt h er e l a t i o n a Is c h e m a 0 b j e c t o r i e n t e dm o d e | I sb a s e do ns o m er a t i o n a l e so f s o f t w a r ee n g i n e e r i n g w h e r e a sr e l a t i o n a Id a t a b a s es c h e m ai sb a s e d0 n m a t h e m a t i c a Ir a t i o n a l e s T h ed i f f e r e n c eb e t w e e nt h et w of o u n d a t i o n s w h i c ht h e o b j e c t o r i e n t e dm o d e l a n dt h er e l a t i o n a l d a t a b a s ea r eb a s e do n c a u s e st h e i m p e r f e c tf i tb e t w e e nt h et w ot e c h n o l o g i e s w h i c hi sc a l l e d “i m p e d a n c em i s m a t c h ” B e c a u s eo ft h ei m p e d a n c em i s m a t c hb e t w e e nt h et w ot e c h n o l o g i e s w h e nu s i n g R D B M St os t o r ep e r s i s t e n to b j e c t sw em u s td ot h ei o bc a l l e d “O b j e c t R e l a t i o n a l M a p p i n g “O Rm a p p i n gj ss u c hap r o c e s st h a tt r i e st om a pt h es t a t e so fo b j e c t s t ot h e d a t ai nR D B M Sj no r d e rt op r o v i d et r a n s p a r e n tp e r s i s t e n ts e r v i c e T h i sp a p e rm a i n l ys t u d i e st h r e ea s p e c t sa ss h o w nb e l o w : T h e o r yb a c k g r o u n do fo b j e c t r e l a t i o n a lm a p p i n g ,o b j e c tm o d e l i n ga n dr e l a t i o n a l m o d e l i n g ,a l s ot h ep r o b l e m st h a tw i l le n c o u n t e r e dw h e nm a p p i n go b j e c tm o d e l i n g t 0r e I a t i o n a Im o d e l i n ga r es t u d i e d T h ew a y st om a pc l a s s e si n0 0 Pt ot a b l e si nd a t a b a s e s t h es t r a t e g i e st om a p t h er e l a t i o n s h i pb e t w e e no b j e c t sa r es t u d i e d T h e r ea r et h er u l e so fo b j e c t r e l a t i o n a l m a p p i n g T h ed i f f e r e n t t e c h n o l o g i e sa n ds o l u t i o n so fo b j e c t r e l a t i o n a lm a p p i n g a r e s t u d i e d 1 tI st h er e a Ii m p l e m e n t a t i o no fO R M T h e r ea r e3d i f f e r e n tt e c k n o l o g i e s b a s e do nr e f l e c t i o n ,b a s e do ns o u r c eg e n e r a t i n g ,b a s e do nb y t e c o d em a n i p u l a t i o n N H i b e r n a t ei si n t r o d u c e d N H i b e r n a t ei st h eC 撑N E Te d i t i o no fH i b e r n a t e I ti s o n eo ft h em o s ts u c c e s s f u IO R Ms o l u t i o n si nr e c e n tp e r i o d 1s u g g e s tan e wm a p p i n gm e t h o d w h i c hu s e dA t t r i b u t ei nC 舞N E T M a p p i n gu s i n gA t t r i b u t ei ss i m p l e rt h a nu s i n gX M L f i l ei nN H i b e r n a t e M a p p i n g I I U s i n gA t t r i b u t ei sm o r ec o n v e n i e n ta n dm o r ei n t u i t i v ea n du n l i k e l yt of a i l T h ep a p e r t r i e st og i v es o m ei m p l e m e n t a t i o n so fm a p p i n gu s i n gA t t r i b u t e ,a n du s e ss o m e c a s e st ot e s ti t Y u nZ h o n g ( C o m p u t e rS o f t w a r eT h e r o y l D i r e c t e db yP r o f X i a o j i a n gQ i a n K E Y W O R D S :O b j e c t R e l a t i o n a lM a p p i n g ,O b j e c tP e r s i s t e n c e ,O b j e c tO r i e n t e d R e l a t i o n a ID a t a b a s e ,O R M I I I 论文独创性声明 本论文是我个人在导舞指导下述行熬磷究工 乍及取雩罢麴磺究成果。 论文中除了特潮加以标注和致谢的施方外,不包含其毪入或其德机构已 经发表或撰写过的研究成果。其他闻志对本研究的启发和所做的贡献均 已在论文中作了明确的声明并表示了谢意。 作者签名: 簋立圣 励立。吞一 1 日期:芝i :垒:兰2 论文使用授权声明 本人闻意上海海事大学有关保留、使霜学位论文的艇宠,霹:学校 有权保留送交论文复印件,允许论文被查阅和借阅;学校可以上网公布 论文的全部或部分内容,也可以采用影印、缩印或者其他复印手段保留 论文。保密的论文在解密后遵守此规定。 作者签名L 二组导师签蚍日期:鱼叫 对象关系映射( O R M ) 的研究0 基十甜N E T 的部分实现 引言 数据是任何计算机应用程序最重要的方面之一。从某个方面看,计算机应用程序 的核心是使某人或另一台计算机能够访问其数据。在企业环境中,数据不仅必须是可 访问的( 即,与用户界面连接并按一系列业务规则管理) ,而且还必须是持久的。持 久数据存储就是即使在服务器崩溃的情况下仍然存在的数据存储。持久数据存在于应 用程序的活动内存之外,通常在数据库或者平匠文件系统中。虽然持久数据被读入内 存以供使用或修改,但它始终被写到外部数据存储中以长期存储。 自从2 0 世纪6 0 年代面向对象技术出现,数十年来该技术在广度和深度 不断发 展、成熟、逐渐成为被广泛采用的行业标准,面向对象的应用程序开发目前已经是信 息技术的主流。几乎所有的应用程序都需要在一个持久化的存储系统( 如关系数据库 或面向对象的数据库) 中存放和取回信息,而对面向对象的应用程序而言这项持久数 据存储工作就围绕着持久化对象展开。持久化对象就是需要被存储在持久化存储系统 中的对象。 对于对象的持久化存储系统,可以选择对象数据库、对象关系数据库、关系数据 库甚至层次数据库或普通数据文件。面向对象数据库是数据库技术发展的产物,其主 要思想是直接以对象的形式将对象存储到数据库中,这样就可以不需要O R M ( O b j e c t R e l a t i o n a lM a p p i n g ) 了。然而O O D B M S ( 面向对象数据库) 却并没有被市场认为是 R D B M S ( 关系型数据库) 的替代者。原因很多,譬如从R D B M S 思维到O O D B M S 思维需要跨越一大步。你需要花比较长的时间学习新技术,才能够正确地让O O D B M S 运行。关系型数据已经非常正确的运行很多年了。等等。所以本文的映射中也不考虑 O O D B M S 。由于关系数据库的理论非常完善,并且得到了数十年的实践考验,无论 从性能还是数据完备性的考虑,目前关系数据库都有着无可比拟的优势。所以现阶段 开发软件系统时在使用面向对象技术的同时常常不得不适用关系型数据库进行持久 数据存储。 面向对象的应用程序开发目前已经是信息技术的主流,同时大多数面向对象的软 件项目都是从关系数据库中访问数据。这一事实对软件设计师和开发人员来说既有积 极的含义又有消极的含义。从积极的方面看,面向对象技术和关系数据库都各有J L 十 年的发展,它们都通过实践证明了它们的可用性。从消极的方面看,对象模型和关系 型数据库模式之间映射很困难。人们已经把大量的努力投入到面向对象软件系统中对 象模型和关系型数据库的关系模型之间的映射中,最后得到的仍然是混合结果。 针对这一现状,本文拟着眼于对象系统中类及其实例与关系数据库中表的映射这 一课题进行探讨和研究。本文的主要内容如下: 第一章通过分析和比较关系模型和对象模型介绍了对象关系映射的基本概念。指 出了在进行对象关系映射时将面临如何选择数据建模驱动方式及“对象关系阻抗不 匹配”两个主要问题,讨论解决第一个问题。 第二章介绍了对象关系映射策略,主要包括: 类的属性映射为数据库表的列。 使用影子信息映射数据库主键,同步信息等。 对类的方法进行映射。 如何对继承进行映射。 对象关撩映射( O R M ) 的研究,耩予甜N E T 的部分实现 麴褥映射递麴关系。 如何对对象的其他关系进行映射。 如何对类范围的属性进行映射。 粥三三章主要讨论了对豫关系映射的各种解决方案,有非对苏关系映射的其他持 久层方案,也有对象关系映射的实现方法方案。广义O R M 有三种实现技术方法,这 三秘方法与辐应匏方法黪l 弋表分别是: E J B 孛豹实钵b e a n ,采惩豹戴鼹垒三藏,鳊译嚣耋蘑生成钱弱。 J D O 采藤的是字节褐攥纵。 H i b e r n a t e 采用的是反射。 鹪四章本章主要介绍了各种O R M 产品,并介绍了N H i b e m a t e 的些简单用法。 以便下章中自己的实现方法采用和N H i n b e r n a t e 相同的例子。 第五章介绍了自己的邋过雠N e t 中属性映射来实现N H i b e r n a t e 中的映射的过程。 其测试羽铡采用懿是第豳露中N H i n b e r n a t e 采越懿睡予。 2 对蒙关幕映射( O R M ) 的垮 究5 j 捧手例N E T 的部分实现 第一章对象关系映射概述 对象,关系映射是数据在关系模型和对象摸型之润的相互转换翡过程,所以在讨论 对象,关系袭瓣藏有必婺先套绥一下这嚣耱模鍪的一些壤念。 1 1 关系模型简介 数据库是某个企业、组织或部门所涉及的数据的综合,它不仅要反映数据本身的 内容,而且要反映数据之闽的联系。数据模型就是数据库中髑来擒象、表示和处理现 实饿莽孛弱鼗搀窝信惠瓣工具,透俗逸谫数撼摸鍪藏是嚣实毽赛鼹攘援。一般熬 莠, 数雅模型是严捂定义豹缀概念酶集合。遮鳖概念准确接述了系统静静态特征、韵恣 特征和完整性约束条件。因此数据模型通常有数据结构、数据操作、完整性三要索。 在数据库发展史上出现了四种模型:层次模型、网状模型、关系模型和面向对象 模型。 1 1 ,1 关系模型摄述 相对于层次模型与网状模型而言,关系数据库的优点 2 】: 关系模型建立在严格的数学模型的基础之上。 关系模型概念单一。无论是实体还是实体之间的联系都用关系表示,对数据的检 索结果也是关系。所以其数据结构简单、清晰,用户易憾易用。 关系模型的存取路绞对瑁户透明,从聪舆芍更高的数摆狱烹拣、更磐的安全绦爨 瞧,氇麓豫了软姆蓉绞开发太员魏工俸。 关系模型的缺点F l : 出于存取路径对用户透明,查询效率不如层次模型和网状模型。因此为了提商性 能,必须对用户的查询进行优化,增加了开发数据库系统的难度。 关系数据库系统主嚣应用是面向事务处理,即面向商业成用。它对传统的商业应 用以外的领域不适合。姗C A s E 、C I M S 、图像数据库( 资源卫星数据、地理信息系 绞、医学系统) 、I R ( 接慰检索) 等。 只能存储亵散数螽稿蠢陵酶数据阗关蓉( 磐1 :1 、1 :N 、N :M 等) ,语义森逡 能力差,所以难以表达客观世界中的复杂对象。 数据类型简单、固定。系统只能理解、j 竽储处理简单数据必型( 数字、串、日期、 布尔、货币等) ,而复杂数据类型必须由用户利用高级程序语言米构造。 面向对象数据库模型由于有着标准化和性能两个问题还有待完善,所以目前关系 模懋在数握库系统中占主导地位。 义。 下遥分绍一下一鍪关系术语。 关系( R e l a t i o n ) :关系是一个真值谓词。关系定义了谓词中包含的属性和谓词的含 属性( A t t r i b u t e ) :个属性标识一个参与关系的名字,并指定了一一个域,这个属 3 对象关系映射( O R M ) 的研究1 j 基于群N E T 的部分实现 性的值只有来源于这个域。 域( D o m a i n ) :一个域是+ 个简单的数据类型。它指定了一个数据抽象:数据可 能的值和数据上可能的操作。 元组( T u p l e ) :元组是在关系背景中的真值声明。一个元组有关系中需要的属性的 属性值,而且其状态为真。 键( k e y ) :表中可以唯一确定一个元组的某一组属性。一个关系可以有一个键,也 可以有多个键。在多个键中选一个作为主键( p r i m a r yk e y ) 。如果关系中的属性或属性 组不是本关系的键,而是引用其他关系或本关系的键,则称为此关系的外键( f o r e i g n k e n 。键是关系的核心。 关系模式( S c h e m a ) :对关系的描述。它可以形式化地表示为:关系名f 属性1 ,属 性2 ,属性n 1 。 与数据模型三要素相对应,关系模型三要素分别为关系数据结构、关系操作集合 和关系完整性约束。【2 】下面分别进行介绍。 1 1 2 关系数据结构 在关系模型中,无论是现实世界的实体还是实体之间的各种联系均用单一的数掘 结构类型即关系( 表) 来表示,而数据操作的结果也是关系。在用户看来,关系数据 模型中数据的逻辑结构( 关系) 就是一张二维表,表的每行为一个元组,每一列为 一+ 个属性。从集合论的角度来看,关系就是笛卡尔积的子集。关系可以有三种类型: 基本表( 基表) 、查询表和视图表。基本表示实际存在的表,它是实际存储数据的逻 辑表示。查询表是查询结果对应的表。视图表是由基本表或其他视图表导出的表,是 虚表,不对应实际存储的数据。关系模型要求关系必须是规范化的,即要求关系模型 必须满足定的规范条件。 1 1 3 关系操作的集合 关系操作的特点是集合操作方式,即操作的对象和结果都是集合。关系模型中常 用的关系操作包括:选择、投影、连接、除、并、交、差等查询操作和增加、删除、 修改操作两大部分。早期的关系操作能力通常用代数方式或逻辑方式来表示,分别称 为关系代数和关系演算。关系代数是用对关系的运算来表达查询要求的方式。关系演 算是用谓词来表达查询要求的方式。另外还有一种介于关系代数和关系演算之间的语 言S Q L 。S Q L 不仅具有丰富的查询功能,而且具有数据定义和数据控制的功能,是 集查询、数据定义、数据操作、数据控制为一体的关系数据语言。它充分体现了关系 数据语言的特点和优点,是关系数据库的标准语言。 1 1 4 关系完整性约束 关系模型中允许定义三种完整性约束:实体完整性、参照完整性和用户定义完整 性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关 系系统自动支持。用户定义完整性是应用领域需要遵循的约束条件,体现了具体领域 4 对象关系映射( O R M ) 的研究+ I 皋j 。c # N E T 的部分实现 中的语义约束。 由关系完整性约束可以得到关系规则,这些规则告诉我们关系模型的表结构中哪 些变化是允许的,哪些检索操作是受限的。关系规则反映了数据模型的特点和特定的 数学假设,对关系结构的良好性状有重大意义,通过保证关系规则,使数据库中数据 正确、一致,一些最主要的关系规则如下【l l J : 第范式规则:在定义的表中,关系模型坚持不允许含有多值属性或含有内部结 构的列。 基于内容存取规则:基于内容存取行。规定了关系数据库提供的表的检索方式一 基于表的内容。 唯一性规则:关系模型假设每个j 亡组都有一个唯一的标识符,这种假设是根据存 储在元组中的数据做出的。这种唯一标识符可以是单独的列,也可以是几个列 的组合。但表要求所有的行都是用相同的列或列组合作为唯一的标识符。 实体完整性规则:表T 中的任意行在主键列的取值都不允许为空。保证了主键必 须起唯一标识作用。 参照完整性规则:参照关系中每个元组在外键E 的值要么为空值( 外键的每个属 性值均为空值) 要么等于被参照关系中某个元组的主键值。保证了表之间的联系。 1 1 5 通常的数据库术语 前面定义过难确的关系术语,但是由于在数据库有着较长的历史,曾出现过不同 的术语,这些术语在关系数据库的环境中被相同地对待。这些通常的术语并不像数据 库术语那么精确,但是这些术语与关系术语近似等价,下面是这些通常的术语的表格。 表11 通常的数据库术语 通常的术语关系术语 表( t a b l e l 关系( r e l a t i o n l 行( r o w )元组( t u p l e ) Y O ( c o l u m n )属。l 生( a t t r i b u t e 、 列值( c o l u m nv a l u e l属性值( a t t r i b u t ev a l u e ) 1 2 对象模型简介 1 2 1 面向对象编程语言的历史 与以F O R T R A N 、C 等为代表的面向过程的程序语言相比,面向对象技术代表了 一种全新的程序设计思路和观察、表述、处理问题的方法,与传统的面向过程的开发 方法不同,面向对象的程序设计和问题求解力求符合人们日常自然的思维习惯,降低、 分解问题的复杂性,提高整个求解过程的可控性、可监测性和可维护性,从而达到以 较小的代价和较高的效率获得较满意效果的目的u J 。 面向对象的语言最早有好几种雏形,I B M 的S m a l l T a l k 是其中最为流行的,在 S m a l l T a l k 中,一切都是对象,一切都是类,它将面向对象的概念发挥到了极致。面 对藩燕系疆甜( O R M ) 秘麟究每基fC # N E T 懿嚣势安现 陶对象的编程眈起传统汾蘑向过摇瀚方式挺进了一大步,谴人们认识垂:藤来软件可 以这样写。不过,由予当时计算机的蕊本结构与底层硬件体系和系统软传的限制, S 翔a l l 强l k 还不裁在理想爨犍韪翦瓣下蘩广裂饕道戆应斓一曼,这一点暂时潺铡了 S m a l l T a l k 的发展。媛整C 语言的面向对象舨c + + 漱现了,| 盔j 尹使用c 语言酶入根多, c + + 很快成为面向对魏编程的主流语誉。不过为了保证与C 蚋熬容,c + + 保魁了很多 矮淘过程数痰迹,魄始耀舒、全是交澄馨等。P a s c a l 酌改遴羧O b j e c tP a s c a l 秘对来说 安全诲多,后来B o r l a n d 于麓褥O b j e c tP a s c a l 换了个名字,涮D e l p h i ,获魏歼氆了一 劳菇岛对象缡程酶耨溅器,D e l 两i 鹩严谨语法移狡速壤译蔽雩| r 众多应臻开笈者,趣 上B o r l a n d 完美的V C L 组件体系,比起M F C 来方便而容易,掰外,D e l p h i 完憋的数 据库组件,也将数搬脬开发变的简单丽容易,D e l p h i 再次成为成熟的面向对魏开发语 骞。微软当然不会放过这些,通过将M F C 内鬣到操作系统中,微软的V e + + 也抢回 一蹙紊强。这也是为嚣么观痨i 嚣笺瓣虚鼷程序缓译后会隧V C 、V B 开发鹣程露大 耱艨毽。1 9 9 5 年,S u n 的一令舞发小缀本来为了小型褒久式系绽开发o A K 涛言,结 聚无心插辚榜威荫,缴麟出了J a v a 添富,它是一个完全攒聪了传统语言静各秘受接 的面向对浆的语言,渴然,也保留了一然非面向对象的核心( 熬本类型) 以保证速度。 臻在J a v a 汜经是最浚行戆嚣自对象港富之一。当然,徽较阑媾不会放过它,蘩予模 仿的徽软立帮开发密辫泉与之竞争。美: 这些添言特点,这霹就不一赘述了。 1 , 2 2 对象镤墼豹綦零檄念 西良辩象技术罴u 葶争耨戆程序设诗鬟蓬,它静蹬疆不霰裙对予传统静蕊怒避程静 穰序设计方法更好士也适应了当今软件丌发的需要,同时也弥补了前述关系模攫的固有 周限性。嘲向对象方法通过各种工具让软件开发人员得以在问题域中表现必受元素, 从葱提供了以闽题撼遮润题豹能力,褥不再是以辫答执行掰焱( 计算辊) 的形式求绉 述阕题。这耱魏力穰大避疆赢了我们在瓣凌氯题邋程中撼象亿黪凄量。 采瘸魏国薅象方法掰建立静待娜汝瓣越的摸溅霹秀对象攘穗,对蒙摸受掰多个辩 象来描述德解决的闻越,建立对象模型嬲作用是:糖敬存在予阉题域中静备零 对象实 体,分析、睨确这魉对象实体的静态数据属性和动态操作属 ! 盘以及它们的桷豆关系, 蔓芨睽蹬交多令对象缀戏豹系绞熬婺终凌纛露状态。弘j 面向对象技术霸对象模型的核心概念和特征如下: 对苏( o b j e c t ) :对象是具有瞧一对整名和固怒对外接翻的幽描述其属性的数据和 定义在萁上嚣懿一缀掇终缝残豹实侮,怒霹募个漤物的一个糖浆攒述 1 2 j 。熬中对象名 ( 又豫对羧糖谖餐,0 b e c tI d e n t i f i e r ) 楚跨象嚣剿予葵缝辩蒙的藩志;露癸接目楚霹 象在约定妊黪运行穰黎秘消惑传递枫锻中与乡争赛遴绩戆逶道;对象躲疆滢衰示了对象 所处于的状态;而对歙的操作则用来袭示对象的行为。对象嘏主要的特点鼹毗数据为 中心,它魑集成了数摊和其上操作的对立的逻辑单位。 状态和行为是对象的主要属性。对象豹状态又称为对象的静态属性,主翼指对象 蠹鼙颞包含的蚕静臻怠,也簸是交繁。每个嚣象个体帮曩鸯鑫己专有魏肉妻# 嶷爨,这 些变量静赣褥硬了对象翳处豹狭态。对象翡霉亍为又髂为对象静搡 睾,它主要攒逮了对 象的动态耩往,操佟静譬譬雳是设置裁髫改变对象游状态。 类( c l a s s ) :类是对缘的软件抽象,熟创建对敷的模板,从类实例出的每个对缀其 蠢稷同的缀鞠耪行为。 接象( a b s t r a c t i o n ) :蠢向对象技术系爝数据擒象的方潦来梅建对象摸羹中的癸、 舂 对象关系映射( O R M ) 的研究2 j 皋于删N E T 的部分实现 对象和方法。数据抽象是把系统中需要处理的数据和在这些数据上的操作结合一起, 根据功能、性质和用途等因素抽象成不同的抽象数据类型,每个抽象数据类型既包含 了数据,又包含了针对的这些数据的授权操作。 封装( e n c a p s u l a t i o n ) :面向对象的封装是将表示属性的状态和表示行为的操作包 装成一个对象类型,对状态的访问和修改只能通过封装提供的接口进行,用户并不知 道底层的数据是如何表示的,操作是如何执行的。封装通常提供信息而隐藏实现方法, 封装和信息隐藏使系统具有更多的可维护性。 多态( p o l y m o r p h i s m ) :对象根据所接收的消息而产生动作( 执行方法) 。同样的消 息被不同的对象接收时可导致完全不同的实现方法,得到不同的结果,该现象称为多 态性。多态是指请求的链接编译要在一个操作的若干种实现方法之削做出选择。多态 允许操作符的重载,就是说一个操作可以有几种不同的实现方法,并有不同种类的参 数相联系。 消息( m e s s a g e ) :从源对象到目标对象的请求,消息在目标对象上作为方法调用实 现。对象是通过消息来互相协作的。 对象问的关系: 一个复杂的系统必然包括多个对象,这些对象间可能存在如下关系:继承、关联、 聚合、组合、依赖。 继承( i n h e r i t a n c e ) :继承是一一种资源共享机制,它使得在定义新类时可利用已有类 的一些信息,这些已有的类被称为基类或父类,新定义的类被称为子类。子类可继承 基类的行为( 操作方法等) 和状态( 属性) 。个类仅从一个类中继承称为单一继承;当 类从两个以上的类中继承时称为多重继承。继承是支持软件复用的一个重要语言机 制。 关联关系是对象之间最弱的一种关系,表示对象间的某种联系,使一个对象知道 另一个对象的属性或方法。关联有单向的和双向的。在面向对象模型中,关联关系通 常是使用实例变量实现的。 聚合是关联的一种,是强的关联关系。聚合是整体和个体之间的关系。与关联关 系一样,聚合关系也是通过实例变量实现的。 组合是更强的聚合,组合关系中代表整体的对象负责代表部分对象的生命周期。 在组合关系中,一个部分对象仅属于一个整体对象,并且部分对象通常与整体对象共 存亡。 依赖也是对象之间的一种关系,它表示一个对象依赖于另一个对象的定义。一般 依赖关系在对象模型中体现为局部变量、方法的参数、以及对静态方法的调用。 1 。3 对象关系映射基本概念 一方面,面向对象技术是应用于新软件系统开发的最常用的环境。另一方面,关 系数据库仍然是许多人都亲眯的持久信息存储方法,并且在较长时间内这种情况不太 会改变。对象模型基于软件工程的一些原理,例如抽象、封装、继承、聚合和多态, 而关系数据模型则基于数学原理,特别是集合论的原理。两种不同的理论基础导致各 自有不同的优缺点。而且,对象模型侧重于从包含数据和行为的对象中构建应用程序, 而关系模型则主要针对数据的存储。对象模型和关系模型之洲的这种失配称为“阻抗 不匹配”。当为数据访问寻找一种合适的方法时,“阻抗不匹配”就成了主要矛盾:使 辩象关系淡菇( O R M ) 拣瞬究,基于搿,N E T 熬嚣分实瑶 用划象模型,你是通过它们的关系来访问对象,而使用关系模烈,则通过冗余数据来 连接表中的行。 由于嚣稳对象豹模型髑关系数提棱謦兹“疆摭疆;逛配”,当应周系统中列象嚣要 储存在关系数据库中,需要进行对象关系的映射。对象关系的映射冲l ( O b j e c t , R e l a t i o n a lM a p p i n g ) 是指这样的一种操作:它试图将对象的状态映射到关系数据库的 数据上,以便提供透明的持久性。 对象:类 寝 类型1 属性1 类型l 。字段2类型2 缓髓2类璧2 字段t 属性3类黧3字段3类型3l 1 I 图1 1 对象关系的峨射 对象关系映射解决方巢一般把每个对象映射到数据库表的单个行上,这一行通常 来垂一令表,迢有簿蠢l 一个表豹连谈缣律产生。魏莱R D B M S 支褥哥更薪裰瓣,使溪 一个视图来简化映射或许是可能的。一般来说,对象关系映射解决方案允许这种映 射不用自定义代码就能避行,从而向编程人员隐藏低级数据储存细节。映射通常被保 存在那些已映射类外部的元数据中。 蹲象关寒获爨在逶露清凌下工馋豹缀姆,可以达爨提裹开发效搴、降低开发袋本 及问题复杂麓的翳盼,倦有时可能并非是最婷的解决方案。对繇关系映射怒面向对 象软件系统访问关系数据库最好的解决方案的假设是有疑问的。对象关系映射既有 优点,也有缺点,也就遐说在使用它之前应该仔细考虑。 对象关装浚封豹重鼗佟瑗1 4 】是它消除了开发入爨编写低级数据疼访闽代弱豹罴 簧,这在莱些应用中耱够极大遗提窝工作效率,飘落傈证应用代鹞专心逢楚瑾对象, 以及能够导致创建一个可以支持多个用例的域对象模型。 但是存在这样一种危险:对象朕祭映射降低总艇杂性的程度不像把它用列别处所 降低的程度那么大,即在某些应用中,对象关系映射可能对降低总复杂性的作用不 大,瑟显露簸关系映瓣零鑫氇豢寒了毅夔复杂蛙。隧J 2 E E 懿容器管理持久瞧实髂 B e a n ( C o n t a i n e rM a n a g e dP e r s i s t e n c eE n t i t yB e a n ) 为例,结果可能是复杂的部署描述 符,而且透明数据访问的代价是对这种访问的控制力度变弱。 对象关系映射的效率也是有疑问的。对象关系映射解决方案一般假设R D B M S 努篓在单行秘单列土操 乍。这是一种误解;R D B M S 在元组集上爨 睾最佳。铡麴,蠲 攀个S Q L 绦作更薪多个行比分巅跑熏新每个行要快褥多。魏聚撼数据高逮缓存在对 象层是可行的,对象关系映射解决方案就会提供杰出的性能;如果这是不可能的, 或者在聚集更新被需要时,通常会显落地增加系统开销。 真正离缀的对象关系映射解决方察能使我们究分享受它的好处,同时又没有这些 缺点中靛一都徐。嫠潋不应霰设对象关系睽莺| 是繇蠢霞嗣关系数疆瘁静瑟淘对象赣 8 对象关系踺蓥重( O R M ) 静磋宠j 蕞手C a N E T 翡郭势蜜王燕 件应用的最佳解决方案。它在某些情7 兄:“I :作得很好,但有时没谢点好处。下面是一 个对象关系映射解决方裳对软件应用系统没有起到帮助作用的标志:1 4 】 在对象驱动建摸熬稳援中,宅导致一个不叁然豹R D B M S 模式,其中该模式醒镬 了往能,并且对其他过程是无用的。一个不自然的R D B M S 模式的标志包括常见 数据操作中需要复杂的连接,R D B M S 不能实施参照完整性,以及一个较好的模 式已经允许使用一个集合操作的地方却需要执行许多单个更新。 在数摄库驱动建模的| 盘况下,它产生一个对象滋,其中对象与R D B M S 中躲表有 一个一对一一兹关系。除非这些表,敲对象模鍪中产生,否黧这磐表可戆不魑囊正的 对象,而且处理它们可能是不自然和低效率的。如果R D B M S 模式发生变化,处 理这些对象的所有代码也将需要变化。 它导致低效率的查询帮更新。 在关系数摇库蠹可以使溪关系掇终轻松瑟有效遮藏行楚一黧任务在软掺应羯中 可能需爱实质的编穰来完成,或者可能导数许多对象的多余创建。 在一个关系数据库的面向对象软件系统中实施对象关系映射通常包含如下三个 步骤:1 5 映射:选择有效的映射策略( 即如何映射对象模型到关系模型) 将对象模型向数 据库关系模型映射,这就是类向数据库表的变换过程。需要映射的除了对象的属 性外还包括对象之间舱关系和对象类之间的继承结构。 实现浚麓:选择逶当耱获莉框絮或技术、王其在较牛系统中实璇上一多中豹蔌瓣, 通常可以设计一个位于业务逻辑层和关系数据庵之间的对象关系映射屡来完成 对象和数据库问的转换。 性能调熬:为提供熬体性能而对数据模型、对羧关系映射及其实现、对魏模型等 系绞各方嚣遴嚣逶囊熬键整。 1 4 进行对飘关系映射时会遇到的闻趟 1 , 4 。1 对象驱凑建模逐楚数鬣宰驱动建摸 进行对缘关系映射时,我们面临的第一个问题就是建立软件应用系统中数据模型 时是采用对象驱动还是数据库驱动。 采爰对象驱韵建模辩,数据模鼙 囊一令对象豢( 遽零是一个实嚣对象屡) 驱动, 而且该层体现了软件应用的持久领域对象的概念。一个例子就怒使用一个像R a t i o n a l R o s e 那样的建模工具从一个U M L 类模型中生成R D B M S 表。 采用数据库驱动建模时数据模型幽数据库模式驱动。这种方法基于目标数据库的 特篷寒创建一个数据疼模式,蠲于套效缝搓逑要被持久保存的数攥。一个铡予是设计 一个与要被撩久保存静数据稆适应的R D B M S 模式,然后编写访淹帮更耨该攘式静高 级编程语者程序代码。 对象驱勘建模有很大的吸引力,它的优点包括: 更大的囊动化涛力。或许,我们熊够使用一个建模工具自动生成R D B M S 模式并 生成赢缀程旁语言代磷,嚣不是手工生袋数爨存镰对象。我饲还籍兔予在应用程 9 对赣关系殃射( O R M ) 的研究4 i 笨于C a N E T 的部分实现 序代鸦中编写S Q L 鬣使用其侄数攥库姆有技术。在开发中,自动纯的使用会明 显提高工作效率。 更大的可移植性。内于对象模型与数据库的一个抽象层溉必不可少的,所以不用 修改对象模型就能使该应用以不同的数据库为目标是可能的。 嚣数据疼驱动建攘稿对j 二对象驱动建摸蠡每谯点有 对象驱动建模通常意味羞丢弃数据麾的许多能力,比如存储过程和有效地自定义 查询的潜力。 对象驱动建模降低了体系结构的灵活性。它紧密耦合了商级语言代码和R D B M S 模式。或许,当需要移植的时候,这种模式能在一个不同的数据库被创建。但怒, 如果有修改数据黪摸式熬其他业务原熬,将繁来很大的工作量。 数据痒驱动建貘邋鬻会提供更磐豹魏魏,这翥鬻是一个决定毪瓣阂蘧。 数掘库之闻静可移植往可髓不像看怒米那样是个优势,丽最在实践中可艇楚不可 实现的。 对象驱动建模容搦忽视基础数据库技术专家的意见,而这些数据库专家通常拥有 开发企业应用方丽的宝贵经验。 对象驱动建模攫暇引入,但有实际豹风验。它豹根本润戆蹙忽蝰了如下事蜜:关 系数据痒是j 鬻复杂麓应用,纛它已逶遥实菠涯鬻了它王终瓣非鬻簿。 当然,对于不同的软件项目应该搬辙凝体情况针对各种阂索进行仔细分橱魄较, 以确定采用对象驱动建模还是数据库驱动建模甚至是两者的结合。例如对于一个 J 2 E E 项目,通常比较适宜用数据库驱动建模。因为虽然数据庠驱动建模可能需露编 写愿多的J a v a 代码,但总体上的复杂度套降低。而且,它给了我们数据和J 2 E E 察现 这鹾方面的更大控制投,他提供了处理镁储性能问题躲更太警闽。如果使用得当,它 不会簿甄霹移壤蠖。 1 4 2 对象关系阻抗不腰配 正如前文所述,关系模型和对象模测肖很大差别。关系数据库基于排序和检索数 据的数学概念,关系数据库设计的目标题规范他数据以消除数器冗余度。面向对魏设 诗豹强标是通过把一令业务过程分簿成熟蠢标识、获态弱行为懿憨 象寒建模一个渡势 避疆。关系数据疼不支持诸热类、继承、瓣装或多态这样豹对象概念。琵代R D B M S 不只是一个数据存储椭,而黾也能够傈诞数据完整性的规则和作用于数据的操作。而 这然,对象却不一定包含。由于面向对苏模型和关系数据席模型这种差异向对敷关 系映射提出的难题常常集体地称为“对象关系阻抗不匹配【ls J ”( o b j e c t R e l a t i o n a l I m p e d a n c eM i s m a t c h ) 。其中部分关键问题是如何用关系数据摩的表表示对象的下列 特性。 对象豹难一往: O O 模型中懿对象都必须有鲁己难一静辩象标识箝( O b j e c t I d e n t i f i e r ,O I D ) 叛区 别于其他对象。以J a v a 为例,在某个J a v a 虚拟机中的J a v a 对浆是通过在确定时刻该 对象的引用( 实际引用代表着该对象在内存中所占空间的地址) 来区别于其他对象【”】。 两个对象可以拥有相剥的状态,但它们必须具有不同的对鲰标识符。同样的,关系数 1 0 对象差系睃瓣( O R M ) 鳇秘宠l 篷手搿。N E T 懿篱势实瑗 据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国全自动圆筒机行业市场发展前景及发展趋势与投资战略研究报告
- 2022-2027年中国林业及木材加工行业发展监测及投资战略研究报告
- 2024-2030年中国互联网卫星制造行业市场竞争格局及投资前景展望报告
- “健康运动活力无限”青少年健康运动俱乐部商业计划书
- 2020-2025年中国肉夹馍行业市场前景预测及投资战略研究报告
- 培训课件内容反馈
- 中国印刷用纸行业市场深度调查及发展前景研究预测报告
- 村级妇联培训课件
- 少儿财商培训课件
- 2024年全球及中国一次性使用负压引流敷料行业头部企业市场占有率及排名调研报告
- 2025年山东将军烟草新材料科技有限公司招聘笔试冲刺题(带答案解析)
- 兵团开放大学2025年春季《公共关系学》终结考试答案
- 2025年中考语文押题作文范文10篇
- 打造重点专科协议书
- 细菌性结膜炎
- 红木文化知到智慧树期末考试答案题库2025年广西大学
- 2025-2030进口肉类市场发展分析及行业投资战略研究报告
- 智慧医院建设项目实施方案
- 项目协作与沟通过程中的冲突管理试题及答案
- 2025年轨道车司机(中级)职业技能鉴定参考试题库(含答案)
- 生物必修1教师用书
评论
0/150
提交评论