以下是摘自百度百科对Hibernate的介绍:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
1. Hibernate是一个轻量级的ORM持久化开源框架,解决的是对象/关系范式不匹配的问题。用大白话说就是Java对象和属性与关系数据库中的表和字段不能直接一一对应,Hibernate像翻译官一样解决它们之间不能直接匹配的问题。
这里有一个很基本的概念ORM:ORM是利用描述对象和数据库之间映射的元数据,自动地将Java应用程序中的对象持久化到数据库中的表。
下面是ORM基本对应规则,也就是Java实体类和属性与数据库表与字段是怎么对应的。
①类和表对应
②类的属性和表的字段相对应
③类的实例与表中一条具体的记录相对应
④一个类可以对应多个表,一个表也可以对应多个类
⑤DB中的表可以没有主键,但是Java对象中必须设置主键字段
⑥DB中表与表的关系,比如外键,映射成Object之间的关系
⑦Java对象中属性的个数和名称可以和表中定义的字段个数和名称不一样
ORM原理
对于Hibernate来说,Hibernate是利用*.hbm.xml文件,描述Java应用程序中的实体类和属性(还有对象之间的联系)与数据库中的哪个表和哪个字段相对应的。对于上图来说,UserModel类怎么映射到数据库中Tbl_user表,是使用UserModel.hbm.xml文件进行描述的。
Hibernate工作原理
上面说到什么是ORM以及Hibernate是怎么利用ORM工作的。另外还有一个概念是持久化。
持久化是应用程序开发中的基本概念之一,如果一个信息系统没有在断电的时候保存数据,那么这个系统就没有什么实用价值了。在Java中谈到持久化时,一般是指利用SQL在关系数据库中存储数据。
2.Hibernate应该位于哪里
几乎所有结构良好的软件都使用了分层设计。我们来看一看遵循德米特法则的典型分层策略以及Hibernate在该分层中的位置。
关于什么是表现层、业务逻辑层、业务模型对象(也就是DTO)相信大家都比较熟悉。这里只简单的介绍一下持久层:
抽象层:为持久层提供一致且有意义的接口。它是一组类和方法的集合。这些类和方法是持久层实现细节的外观模式。其中最常用的是DAO模式。 持久化框架:这就是Hibernate所在的位置。持久化框架负责与数据库驱动程序(或者接口)交互,提供数据的更删改查方法。 驱动程序/接口层:负责在底层与存储设备进行通信和交换数据。
对Hibernate有一个大致概念。知道它是什么、它是怎样进行工作的、开发中它应该在哪儿使用以及它的优点和缺点。接下来从Hibernate的配置文件开始,一一解析Hibernate。