1、 O/R Mapping理论
O/R Mapping就是Object-Relational Mapping(对象-关系映射),另外还有个缩写是ORM的Object Role Modeling(对象角色建模)这个和我们的ObjectSpace没有什么关系。
正如前面所说,O/R Mapping就是要解决关系模型和对象模型的矛盾,在C#之类完全面向对象的环境中不去处理这一矛盾,把精力大部分投入到对象的分析和设计中。
图1 不同数据模型的比较(本图片来源于微软网站的Getting Started with ObjectSpaces)
对象模型理论经过几年的发展已经趋于成熟,而且其优势也不断体现。面向对象建模和编程很接近我们的现实生活,而且其优势还在于软件开发过程中适应不断的需求变化。在面向对象编程的时候很显然我们建立的对象是放在计算机内存之中,如果关闭计算机那么我们的对象就不存在了,对象的永久性(也就是长久保存对象)是我们一直的期望,在O/R Mapping出现前我们设计程序不得不花费大量的精力和时间构建我们的Data Access Layer (DAL数据存取层),如果项目规模比较大的时候可想而知这个DAL层的复杂程度,例如微软的Duwamish 7.0中就在这上面用了很多DataSet和DataTable来构建,相当烦琐(当儿也是DAL经典的解决方案)。
现在很多对象模型的数据库已经出现,但其还很不成熟,在现阶段我们不得不继续使用关系数据库来保存我们的信息,O/R Mapping让我们以简单快捷地完成对象到关系的转换,使我们内存中的对象在关系数据库中“永恒”。
我估计很有可能当对象数据库技术成熟的时候我们的O/R Mapping就将消失,ObjectSpace等等这方面的东西都只是这一时期的过渡产品。
(未完待续)
于2004-05-18修订过