ORM(Object-Relation  Mapping) 对象--关系映射是用来将对象和对象之间的关系对应到数据库表与表之间的关系的一种模式。

持久化:就是把内存中的数据同步保存到数据库或者永久存储设备(如磁带硬盘中)中。原理如图所示:

 

持久层就是专门负责持久化工作的逻辑层,由他统一和数据库层打交道。

增加这一层就可以将原先的三层模型(表示层,业务逻辑层和数据库层)修改成四层模型(表示层,业务逻辑层,持久化层和数据库层),持久层封装了所有与数据库有关的操作和细节,作为专业的持久层中间件,除了具备基本的增删改查数据外还必须提供连接管理、事务管理、性能管理、缓存管理、对象-关系映射等高级功能,以满足专业的开发需求。

JDBC劣势

  对于小型的应用开发而言,使用JDBC感觉还不错,但对于大型应用开发而言,单凭JDBC就显得力不从心了,例如从上百张拥有几十个字段的数据表中取数据的话,可以想象要写多少个getXXX()语句完成数据读取工作,暂不说繁琐的代码,最让人头疼还有高出错率和低复用性。

   在当今多层次体系结构的软件开发中,使用JDBC很难将持久层进行分离,负责业务逻辑代码编写的程序员必须密切关注数据库各表的结构关系,以确保SQL语句工作的正常。如果引入Hibernate这样的持久化层中间件的话,业务逻辑层的开发人员整天面对的就是一个又一个的对象而不必关系数据表,既有利于团队分工协作,又提高了软件产品的可移植性。

实体域模型与关系数据模型

实体域模型是对真实世界中的物质实体的抽象,它由实体域对象组成,实体域对象用来代表这些真实世界中的物质实体。也可以理解为实体类。

关系数据模型便是对关系数据库中关系数据的一种静态描述,可以用E-R图表示。

综上所述,实体域模型是面向对象的,而关系数据模型是面向关系型数据库的,他们之间的数据交换需要一个映射的过程。

实体域对象和关系数据表之间的转化可以通过Hibernate的映射配置文件XXX.hbm.xml进行映射。

在分层体系架构中,Hibernate负责应用程序和数据库之间的数据交换,具体起ORM中间件的作用。

 

 

有图可以看出,Hibernate与数据库的连接配置信息均封装到hibernate.properties或者hibernate.cfg.xml文件中,对象--关系的映射工作依靠ORM映射文件进行,最终完成对象与关系间的平滑映射。