带你玩转Hibernate ! ! !

Hibernate 的介绍:

Hibernate  是一款免费开源的持久层框架,它对 JDBC 进行了轻量级的对象封装,将对象与数据库表建立了映射关系,使 Java 编程人员可以随心所欲地使用面向对象的编程思想操作数据库。

Hibernate 具有简单易用、灵活性强、扩展性强等特点,大大提高了程序的开发效率。

使用传统的 JDBC 开发小型应用系统,并不会有什么麻烦,但是对于大型应用系统的开发,使用 JDBC 就会显得力不从心。

例如对几十、几百张包含几十个字段的表进行插入操作时,编写的 SQL 语句不但很长,而且繁琐,容易出错;在读取数据时,需要编写多条语句从结果集中取出各个字段的信息,工作量非常大。

为了提高数据访问层的编程效率,Gavin King 开发了一个ORM(即 Object-Relational Mapping 对象关系映射)框架—— Hibernate 框架。

ORM 就是利用描述对象和关系型数据库之间的映射信息,自动将 Java 应用程序中的对象持久化到关系型数据库的表中。通过操作 Java 对象,就可以完成对数据库表的操作。可以把 ORM 理解为关系型数据和对象之间的一个纽带,开发人员只需要关注纽带一端映射的对象即可。

优点:

  1. Hibernate 对 JDBC 访问数据库的代码进行了轻量级封装,大大简化了数据访问层繁琐的重复性代码,并且减少了内存消耗,加快了运行效率。
  2. Hibernate 使用 Java 的反射机制,而不是使用字节码增强程序类,并实现了透明性。
  3. Hibernate 的功能强大,映射的灵活性很出色。它支持很多关系型数据库,从一对一到多对多的各种复杂关系。
  4. 可扩展性强,由于源代码的开源以及 API 的开放,当本身功能不够用时,可以自行编码进行扩展。

Hibernate的执行流程:

Hibernate 的执行流程过程具体如下。 1)创建 Configuration 实例,加载 Hibernate 核心配置文件和映射文件信息到 Configuration 对象中。 2)创建 SessionFactory 实例。通过 Configuration 对象读取到的配置文件信息创建 SessionFactory 对象,该对象中保存了当前数据库的配置信息和所有映射关系等信息。 3)创建 Session 实例,建立数据库连接。Session 主要负责执行持久化对象的增、删、改、查操作,创建一个 Session 就相当于创建一个新的数据库连接。 4)创建 Transaction 实例,开启一个事务。Transaction 用于事务管理,一个 Transaction 对象对应的事务可以包含多个操作。在使用 Hibernate 进行增、删、改操作时,必须先创建 Transaction 对象。需要注意的是,Hibernate 的事务默认是关闭的,需要手动开启事务和关闭事务。 5)利用 Session 接口通过的各种方法进行持久化操作。 6)提交事务,对实体对象持久化操作后,必须提交事务。 7)关闭 Session 与 SessionFactory,断开与数据库的连接。 注意:Hibernate 中的 Session 不同于JSP中的 HttpSession。在 Hibernate 中使用 Session 对象时,通常指 Hibernate 中的 Session,而 HttpSession 被称为用户会话 Session。