· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [专题] IBM Rational高峰论坛 Windows 7十大功能
· [专题] 史上就危险7月 微软 BizSpark 计划介绍
· [IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 我也能做CTO_赛迪连载 赛迪七夕特别行动
· [热点] Chrome 4.0采用V8引擎 Java开发编程规范

对象与关系之间的矛盾:“阻抗失配”效应

发布时间:2007.11.23 05:34     来源:赛迪网技术社区    作者:39190

概述

“阻抗失配”这一词组通常用来描述面向对象应用向传统的关系数据库(RDBMS)存放数据时所遇到的数据表述不一致问题。C++程序员已经被这个问题困扰了好多年,而现在的Java程序员和其它面向对象开发人员也对这个问题深感头痛。

“阻抗失配”产生的原因是因为对象模型与关系模型之间缺乏固有的亲合力。“阻抗失配”所带来的问题包括:类的层次关系必须绑定为关系模式(将对象类映射为关系表),ID生成,并发访问以及下面提到的一些问题。

应用和数据存储方式的不一致是导致这些问题的主要原因。这个问题在很多方面已经变得十分明显,如:产品上市的周期,应用设计、开发和维护的费用,代码维护和扩展性,以及能够满足响应时间和性能需求的硬件配置和结构。在这些方面使用不同的数据存储方式所得到的结果将有很大的不同。

面向对象与关系数据库之间不一致所带来的必然结果——基于SQL的应用程序与面向对象数据库之间的不匹配效应越来越受到人们的关注,所以,对这个问题解决方法的探讨十分必要。

面向对象的开发语言

目前许多的业务逻辑和用户界面都是用很受欢迎的面向对象语言开发的,比如:C++,Visual Basic,Delphi,不断成熟的Java,以及很多开源程序语言。这些面向对象语言环境或多或少地实现了封装,多态,继承等概念。正确使用这些概念可以为整个开发带来相当大的好处。

在何处存放数据?

如果对数据的持久性有要求的话,面向对象语言和所有开发语言一样,都需要绑定数据存储器,一般情况下都采用数据库作为数据存储器。三种主要的数据模型是:关系型,对象型和后关系型亦即事务多维模型。

关系与对象数据库模型的根本区别

将关系数据库和对象数据库模型的不同点和两种不同模式的开发方法做个比较对应用开发人员十分有用。

关系模型中的表将信息保存在列中并以行的形式进行组织。复杂的数据类型往往需要很多的表来表示。表之间的关系(一对一,一对多,多对多)基于表的外键实现。

业务逻辑操作必须由表外的资源执行,例如:通过使用嵌入式SQL语句或者使用存储过程和触发器。为了建立关系模式的高效应用,开发人员必须对表,表间关系有相当深入的了解,而这些都是独立于业务逻辑组件之外的。

相反,对象模式中的类则是自包容(self-contained)实体。与关系表一样,它们包含信息(通过属性的方式)。但类与关系表一个很大的不同之处是相关数据(即嵌入式类和类集)可以存储在“容器”类中,而不是将这些相关数据分隔成独立的表,再使用外键重构它们之间的联系。

另外一个重要的不同点是,在对象模式中业务逻辑不是由外部的资源执行的。一个类中的方法就包含了对其类属性操作的代码。方法提供了调用这个类的接口,所以应用开发人员就不用顾虑使用关系模式所带来的复杂度了。(责任编辑:卢兆林)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
专题:扭亏为盈 联想09年Q2翻番
·专题:Tech·Ed 2009微..
·直播:2009互联网大会..
·迅雷搜狐"互搏" 谁动了..
专题:诺基亚危局已现 或重蹈摩托覆辙
·六股势力角逐4G标准 中..
·专题:联通iPhone并不贵..
·专题:排排坐开商店 三..
商务演示需求分析 多媒体会议室必备投影
·VMware在京隆重举行2009..
·专题:笔记本频道10月热..
·专题:学生机市场 惠普 ..
专题:Tech.Ed 2009微软技术大会
·专题:2009 SYBASE 亚太..
·专题:微软新一代桌面操..
·专题:2009年第3届CSDN..