导航

个人理解的ORM

Posted on 2012-04-09 11:21  漂泊一生  阅读(1002)  评论(0编辑  收藏  举报

什么是ORM?

  对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。

  其实我们现在的语言很多是面向对象的,数据库是关系数据库。而我们天天在提倡面向对象编程方式,这就需要一套自动的机制去建立对应关系,这就是ORM。我们在写代码的时候,花了大量的时候去写DAL,但是DAL的很多方法,其实是重复的,通过ORM,你就可以不必花大量时间去写DAL,所有的方法能够自动生成。

下图是ORM在多层系统中的应用。

 

ORM优缺点

  在没有建立ORM的系统中,我们修改关系数据库时,如:给一个表增加了一个字段,这就可能会导致修改很多的代码;如果通过ORM,可能只需要将对应关系稍加修改就可以了,而不需要大动干戈的修改大量代码。

  但是ORM以牺牲性能为代价,在ORM系统中需要分很多层,层越多,牺牲性能越大;同时需要将对象持久化到内存中,也浪费很多内存,但对于对数的系统,这些浪费显得那么微不足道。

  MSDN上的一句话讲了ORM的优点:

  目前大多数项目或产品都使用关系型数据库实现业务数据的存储,这样在开发过程中,常常有一些业务逻辑需要直接用写SQL语句实现,但这样开发的结果是:遍地布满SQL语句。这些高藕合的SQL语句给系统的改造和升级带来很多无法预计的障碍。为了提高项目的灵活性,特别是快速开发,ORM是一个不错的选择。举个简单的例子:在使用ORM的系统中,当数据库模型改变时,不再需要理会逻辑代码和SQL语句中涉及到该模型的所有改动,只需要将该模型映射的对象稍作改动,甚至不做改动就可以满足要求。http://www.microsoft.com/china/MSDN/library/netFramework/netframework/Grove.mspx?mfr=true

  最后,推荐一下EF4.3http://www.cnblogs.com/supercpp/archive/2012/02/20/2354751.html,09年就接触EF了,但是用了一段时间感觉不是很好,后来就没接触过了,现在EF越来越成熟了,可以再次拿来试试了