对象关系映射中类的继承映射分析与实现
对象关系映射中类的继承映射分析与实现 第10卷第9期
20l1年9月
VOll0No.9
SeD.20l1
对象关系映射中类的继承映射分析与实现
兰伟,万权性.
(1.重庆科创职业学院信息工程学院,重庆402160;2.九江职业大学信息工程学院,江西九江332000)
摘要:针对软件开发人员经常面对如何实现类的继承映射,研究了实现类的继承映射的几种实现方法,重点分析每
种方法的优缺点,并给出如何使用的几点建议.解决软件开发过程中存在继承关系的对象持久化问题.
关键词:继承;类的继承映射;对象持久化
中图分类号:TP311.52文献标识码:A文章编号:1672—7800(2011)09—0075—02 1什么是类的继承映射
继承是指一个对象直接使用另一对象的属性和方法,
是面向对象程序设计3大特点之一,在面向对象设计中得
到广泛应用.然而,关系数据库不能直接支持继承,无法
直接描述类之间的继承关系,所以当需要对多个存在继承
关系的对象进行持久化时,需要设计者去完成相关的映
射,即类的继承映射.
2类的继承映射实现方法
通常有3种方法实现类的继承映射,分别是:?所有
的类映射成一张表;?每个子类映射成一张表;?每个类
映射成一张表.这3种实现方法各有特点,以下是对这3
种实现方法的分析.
量;?子类的属性和从父类继承的属性分别映射成表的字 段;?每一个映射表增加一个主键字段.具体映射如图3 所示.
图2所有的类映射到一张表
图3每个子类映射成一张表
在分析前,我们假设存在一个简单的类继承关系.如2.3每个类映射成一张表
图1所示:
图1一个简单类继承关系
2.1所有的类映射到一张表
映射步骤是:?把所有的类的属性映射成为表的字 段;?为映射表添加一个主健字段;?为映射表添加一个 类型字段用于区分子类的类型.具体映射如图2所示. 2.2每个子类映射成一张表
映射步骤是:?根据子类的个数确定需要映射表的数 映射步骤是:?根据类的个数确定需要映射表的数 量;?每个类的属性分别映射成表的字段;?每个映射表 增加一个主键字段;?将子类映射表的主键字段同时也设 为外键,通过外键来描述子类与父类的继承关系. 具体映射如图4所示.
3三种实现方法的对比
根据上面的分析,我们知道如何用3种方法实现将类 继承关系映射到关系数据库中,接下来我们分析这3种实 现方法的特点.
3.1所有的类映射到一张表的特点
优点:?映射方法简单;?当需要增加新的类时,只需 要通过在表中增加相应的字段就能轻松的实现;?因为所 作者简介:兰伟(1974一),男,重庆荣昌人,硕士,重庆科创职业学院信息工程学院讲
师,研究方向为Java教学研究与应用,高职教育 改革,高职师资队伍建设;万权性(1982一),男,江西九江人,九江职业大学信息工程
学院助教,研究方向为计算机应用.
软件导刊2O】1句一
有的数据都在…一个表中,所以查寻效率高;?通过类型字 段町以很好支持多态.
IPersonl
l
Per
l
on
Nalnem""l
101l01
CtIstolner.Employee PersonPOID<<PK>;<<FK>>PersonPOID<<PK>><
;<FK>>
Preferei1cesSalary
f
Executive
PersoflPOID<<PK>><<FK>>
BonIls
图4每个类映射成一张表
缺点:?所有类映射在一张表,其中一个类发生变化, 会影响表中的所有
,偶合性高;?所有类映射在一张 夫.衣中必然存在大量冗余数据,存储空间浪费大;?当类 的继承关系很复杂时,表的记录数会变的很庞大. 3.2每个子类映射成一张表的特点
优点:可以高效访问单个对象上的数据.
缺点:?当修改父类时,除了要修改父类映射的表外, j叠需要修改子类映射的表;?当对象拥有多少角色时,很 堆保持数据的完整性,例如表中很难描述既是员工,义是
客的对象.
3.3每个类映射成一张表的特点
优点:?映射表相对简单,容易理解;?当父类或子类 改变时,表的修改量小;?数据冗余少,存储效率高;?很 容易实现多态.
缺点:?映射表的数量较多;?因为通常需要同时访 问多个表,查询效率低;?因为通常需要访问多个表,确 输写SQL语句比较困难.
4结束语
经过上述分析可知,3种实现方法各有优缺点,具体 选用哪种方法要设计者根据设计的需要灵活选择.下面 是笔者给出的选择建议:?当继承类的数量不是很多,继 承关系不是很复杂时,可以选择所有的类映射到一张表的 方法实现类的继承映射;?当继承类之间类型比较同定 时,即对象的角色不会经常重叠,可以选择每个子类映射 成一张表的方法实现类的继承映射;?当继承类之间类 经常发生变化,或需要经常使用多态时,可以选择每个类 映射成一张表的方法实现类的继承映射.
参考文献:
[1]易燕.对象关系映射框架的研究与实现[J].电脑知识与技术,2(川8 (17).
[2]麻淑芳,闫占强.对象关系模型在综合测试系统中的映射与研究 EJ].计算机光盘软件与应用,2OIO(15). (责任编辑:周晓辉j
DesignandImplementationofInheritingClassesMapping
0fobject—RelationalMapping Abstract:Fhispaperstudiedtheseveralrealizemethodsoftheinheritancemappingofclasses;
thepaperanalyzesthead vantagesanddisadvantagesofeachmethod,andgivessomeSuggestionsofhowtouse.Soasto
SOlVesoftwaredevelop
mcntprocessesintheobjectpersistentproblemsofinheritaiicerelationship.
KeyWords:Inheritance;InheritanceMappingofClasses;ObjectPersistent