Posted on 2005-05-22 20:21
wxb_nudt 阅读(881)
评论(1) 编辑 收藏 所属分类:
技术杂谈
ORM随想
前言
周末的夜晚,总显得特别无聊,总看卫斯理的书不是办法,得找点事情干干。前几天为了验证自己的一个想法,到网上搜索,结果发现了hibernate,为了跑一跑hibernate,结果学习了Ant,最后发现hibernate是一个ORM工具,于是自然把视线转移到了ORM。在网上的资料中游荡,发现对于ORM没有一个完整的中文资料,English的资源也不甚明了。于是有必要把自己所看、所想、所用的做一个小小的总结。
ORM的定义及来由
ORM是Object-Relational Mapping的简称,中文含义是“对象――关系映射”。此处的“对象”,乃是Object Oriented(面向对象技术)中的对象,而“关系”则是关系数据库中的关系。
为什么需要ORM呢?自然是因为需要将对象和关系互相转换,而为什么需要互相转换,就需要解释一下“程序”的概念。最早关于程序的概念是:
程序=算法+数据结构
而在信息处理领域,目前我们实际面对的程序概念是:
程序=数据+数据处理
计算机的程序有两个大的应用领域:科学计算和信息处理,最初的计算机程序大部分是为了进行科学计算的,这也是为什么在早期的大学中计算机系是数学系的一个分支的原因。而随着计算机技术的不断发展,尤其是网络技术的发展,信息处理已经成为计算机重点关注的问题。“信息技术”(Information Technology,IT)产业也不断发展状态,甚至脱离了计算机技术的领域,自立门派了。说了那么多,其实就是为了说明一个问题,目前的计算机程序,大部分是为了进行信息处理的,而进行信息处理的程序,就等于数据+数据处理。
而目前程序中的数据大部分是保存在关系数据库中的。目前程序的数据处理流程大部分是用面向对象语言编写的,因此
程序=关系数据库+面向对象语言
这个等式在大部分状况下成立。面向对象语言中的基本信息存储单位是“对象”,而关系数据库中的基本信息存储单位是“记录”。那么,当程序需要在数据的处理和数据的存储之间交换信息时,不可避免的要将“对象”和“记录”进行转换。
关系数据库的理论基础是关系代数,面向对象语言的理论基础是面向对象技术,如果能够在具体的程序编写之前解决“对象”和“记录”的映射问题,提出一个通用的解决方案,那么一定能够大大加快程序开发的效率和质量。这个通用的解决方案在部分上已经实现了,就是ORM。
力有未逮,下次再续……