什么是ORM?对象-关系映射:Object/Relation Mapping,简称ORM

    ORM是随着面向对象的软件开发方法发展而产生的,面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是 企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内 存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存 在,主要实现程序对象到关系数据库数据的映射。

  面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。

  让我们从O/R开始。字母O起源于"对象"(Object),R则来自于"关系"(Relational)。几乎所有的程序里面,都存在对象 和关系数据库。在业务逻辑层和用户界面层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。(关于O/R的详细介绍,可参看《数据库系统概念》(原书第四版),Abraham Silberschatz Henry F.Korth S.Sudarshan 著)

    NET体系常用的编码方式,如Petshop4.0,看看DAL(数据库访问层)代码,你肯定会看到很多近似的通用的模式。我们以保存对象的方 法为例,你传入一个对象,为SqlCommand对象添加SqlParameter,把所有属性和对象对应,设置SqlCommand CommandText属性为存储过程,然后运行SqlCommand。对于每个对象都要重复的写这些代码。这种方式采用的是微软ADO.NET的数据连接方式,这种方式,会把业务对象转化为数据对象,容易让程序员误解和迷茫,那有没有更好的方式方法呢?有,采用ORM,将放弃传统的这种业务对象转为数据对象的方式,而直接将业务对象保存到数据库中,因此ORM有时也称为基于事实的建模,因为它把相关数据描述为基本事实。这些事实如果分割为再小的事实就会丢失信息。

  一般的ORM包括以下四部分:

  A.一个对持久类对象进行CRUD操作的API;

  B.一个语言或API用来规定与类和类属性相关的查询;

  C.一个规定MAPPING METADATA的工具;

  D.一种技术可以让ORM的实现同事务对象一起进行DIRTYCHECKING, LAZY ASSOCIATION FETCHING以及其他的优化操作。

  

  目前NET体系下常用的ORM有两种:

  A.NHibernate

  B.ADO.NET Entity Framwork

  我将就这两种框架,做详细阐述。

 

posted on 2014-08-30 23:13  huhai121  阅读(338)  评论(0编辑  收藏  举报