认识ORM

来源:互联网 发布:淘宝如何用手机付费 编辑:程序博客网 时间:2024/05/20 09:48


ORM,对象关系映射(Object Relational Mapping)。


一、 ROM的由来


要理解一个名词,从它的由来开始说明或许会更容易理解。

ORM的需求是随着面向对象OO编程开发方法而产生的。如今,面向对象的OO编程已成为企业级开发中主流开发方法,而关系型数据库也成为企业级应用环境中永久存放数据的主流数据存储系统。同样的数据,一是在实际编程中,以对象的形式表现,二是以关系数据持久化存储到硬盘上。

因此可以说,对象和关系数据是业务实体的两种不同表现形式。业务实体在内存中表现为对象,而在数据库中变现为关系数据。

内存中的对象之间存在关联和继承关系,在数据库中,关系数据无法直接表达多对多关联以及继承关系。此时,ROM出现了,ROM以中间件的形式存在,主要实现程序对象到关系数据库的映射。



二、 ROM的作用


关于ROM的描述很多,但是找不到很清晰的一句话能够真正的概括ROM。以下是笔者看到的几种说法。

  • ORM就是利用描述对象和数据库之间映射的元数据,自动把Java应用程序中的对象持久化到关系数据库中的表。
  • ORM用来把对象模型表示的对象映射到基于SQL的关系模型数据库结构中去。
以上这种表达,简单的说就是通过ORM,以映射的方式,将对象->关系数据。它的作用就是将数据持久化变成自动的,透明的,使程序员省去了大量将对象持久化到数据库中的代码。一般情况下,一个持久化类对应一个表,类的每个实例对应表中的记录,类的每个属性对应表的字段。

  • ORM将关系数据库中的业务数据用对象的形式表示出来,并通过面向对象的方式将这些对象组织起来,实现系统业务逻辑的过程。
这种表达,就是使用ORM,将关系数据->对象,这样做的好处就是,我们可以直接使用ROM的API来对对象进行CRUD,无需写SQL代码以及对DAL做大量重复的工作。

这样分析,以上任何一句话都不能完整的概括,因为关系数据<-->对象,之间应该是双向的关系,而不是单向的。

因此,笔者更加同意这样的表达:ORM就是把对象和数据库记录映射关联起来。而这里的关联,就是一个双向的关系。



三、 ROM的优缺点


其实当了解了ORM的作用后,它的许多优点也呼之欲出了。

(一)优点

1. 程序员可以不用自己写SQL等语句,专心在业务逻辑上,减少了coding的时间。
2. 很强的可维护性。动态的数据表映射,当数据表结构或数据库发生改变时,减少了相应代码的修改。
3. 适合复杂的系统(复杂,而不是大型),这样的系统要求建造速度快,系统稳定,它们的业务规则非常复杂,但是对系统的性能要求不高。

(二)缺点

1. 有些复杂的查询,ORM虽然可以解决但是会非常复杂,此时仍推荐使用SQL。
2. 性能问题。ORM无法解决每个对象实例在构造时分配内存所耗的时间,带来大约20%的损失;当然现在的ORM框架都在尝试各种方法来减轻这块(LazyLoad,Cache),效果还是很显著的。
3. 执行效率低于直接用SQL语言编写。

(三)ORM的使用场合

1. 对性能要求不是很苛刻的程序
2. 开发时间紧迫
3. 有数据库迁移的要求


笔者初学ORM,严格的说还未使用过,以上全部出于看过10+篇相关博客后,自己理解并整理出,有任何错误欢迎指正。




0 0
原创粉丝点击