一、ORM框架指的是对象、关系、映射
而ORM框架主要分为Hibernate(Nhibernate),iBATIS,mybatis,EclipseLink,JFinal这五种
ORM方法论基于三个核心原则:
- 简单性:以最基本的形式建模数据。
- 传达性:数据库结构被任何人都能理解的语言文档化。
- 精确性:基于数据模型创建正确标准化了的结构。
二、ORM优缺点
优点:
提高开发效率,降低开发成本
使开发更加对象化
可移植
可以很方便地引入数据缓存之类的附加功能
缺点:
自动化进行关系数据库的映射需要消耗系统性能。其实这里的性能消耗还好啦,一般来说都可以忽略之。
在处理多表联查、where条件复杂之类的查询时,ORM的语法会变得复杂。
三、ORM框架形式
1.EF(Entity framework)实体框架:ado.net一组支持开发面向数据的软件应用程序的技术。微软的一个ORM框架
其实在上图中我们可以看出来使用了ORM的框架,使用的是强制类型,不容易出现错误,直接实现了由表实体到表的操作,而没有使用的ORM框架,我们需要数据库访问驱动层,Ado.NET操作数据,是一种弱类型的操作,非常容易出现错误。其实ORM框架的底层代码也是ADO.NET,只不过这些代码是封装好了的,直接可以被用户使用,非常方便!
2.linq to sql
其实在ORM框架除了EF映射,还有linq to sql,注意到这一块是因为在vs中创建EF映射的下面还有一个叫做linq to sql,其实这也是一种ORM的框架,只是适用于一些轻型的,小的ORM适用;感兴趣的可以尝试一下!相关访问博文:www.cnblogs.com/yukaizhao/a…
3.CYQ.Data 自动化编程框架
这个框架其实也是在EF的原理基础之上通过改编形成的一种ORM框架,详情请看:
www.cnblogs.com/cyq1162/p/5…
4. NHibernate
NHibernate是一个面向.NET环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。所以NHibernate与Entity
Framework是很相近的。
其实在敲ssh商城的时候我就一直遇到一个名词:数据持久化,当时一直不太明白到底是什么意思,后来在学习这一块基础的时候发现:数据持久化(PO)就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称.数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。cmp和Hibernate只是对象模型到关系模型之间转换的不同实现。
四、广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。
狭义上,ORM可以被认为是,基于关系型数据库的数据储存,实现一个虚拟的面向对象的数据访问接口。理想情况下,基于这样一个面向对象的接口,持久化一个ORM对象应该不需要了解任何关系型数据库存储数据的实现细节。
ORM思想其实就是表实体和表之间的相互转化。
五、
数据持久化
ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。
这种方案存在以下不足:\
- 持久化层缺乏弹性。一旦出现业务需求的变更,就必须修改持久化层的接口
2 持久化层同时与域模型与关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,毒药修改持久化曾的相关程序代码,增加了软件的维护难度。
ORM提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁。Java典型的ORM中间件有:Hibernate,ibatis,speedframework。
数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称. 数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。
狭义的理解,持久化仅仅是指把对象数据永久保存在数据库中,数据在计算机中一般由两个存储地,内存为暂存,数据库可以理解为永存;广义的理解,持久化包括和数据库相关的各种操作,封装了数据访问细节,为大部分业务逻辑提供面向对象的API。
数据持久化好处:
松散耦合,程序代码重用性强,使持久化不依赖于底层数据库和上层业务逻辑实现,更换数据库时只需修改配置文件而不用修改代码。
业务逻辑代码可读性强,在代码中不会有大量的SQL语言,提高程序的可读性。
持久化技术可以自动优化,以减少对数据库的访问量,提高程序运行效率
数据持久化对象的基本操作有:保存、更新、删除、查询等。
由此可知,数据持久层也就是与数据交互的那一层次,所以有时候有见到ORM框架介绍:是一个数据持久层(ORM)框架
六、
一般的ORM包括以下四部分:
- 一个对持久类对象进行CRUD操作的API;
- 一个语言或API用来规定与类和类属性相关的查询;
- 一个规定mapping metadata的工具;
- 一种技术可以让ORM的实现同事务对象一起进行dirty checking, lazy association fetching以及其他的优化操作。