Hibernate快速学习
Hibernate 是数据持久层里常用的轻量级框架。同类还有 iBATIS、MyBatis、NHibernate、Siena 等。它是一套开源的 ORM(Object-Relational Mapping),用面向对象的方式查询和操作数据库,把大量 JDBC 样板代码从业务里拿掉。
上手时先抓住两件事:五个核心接口各自干什么,以及从 JDBC 封装、分层、ORM 三个角度看它到底站在哪一层。
一、Hibernate 介绍
1. 什么是 Hibernate
Hibernate 把对象和关系表对上,提供查询与获取数据的方法。开发时按对象思考,而不是手写一整段 insert / update。
2. Hibernate 的优点
-
使用简洁的 HQL(Hibernate Query Language),可以不再手写传统的 insert、update。例如插入一条记录,原来是 insert into 表名 values(值1, 值2, …),现在是save(对象)。 -
使用 ORM 映射:从对象的角度操作数据库。以前常见流程是先有表再抽实体;Hibernate 这边是对象映射到表。 -
没有侵入性,移植性较好。它使用 POJO:不继承 Hibernate 类、也不实现 Hibernate 接口,就是普通 Java 类,换持久层时更容易带走。 -
支持透明持久化。三层架构里上层只依赖接口;Hibernate 对业务层提供 Session,其余封装起来。持久化本身是指把内存中的数据落到磁盘。
3. Hibernate 中 5 个核心接口
| 接口 | 职责 | 注意 |
|---|---|---|
| Configuration | 配置并启动 Hibernate,用来创建 SessionFactory | 读配置、建工厂 |
| SessionFactory | 对应一个数据源;一个数据库对应一个 SessionFactory,用来创建 Session | 线程安全,可多线程共享 |
| Session | 最常用,负责增删改查 | 非线程安全,不能共享 |
| Query | 数据库查询对象 | HQL / Criteria 都从这里走 |
| Transaction | 封装底层事务,例如 JTA(Java Transaction Architecture) | 增删改查都应包在事务里 |
二、从三个角度理解 Hibernate
1. 对 JDBC 的进一步封装
没用 Hibernate 做持久层时,JDBC 语句、Connection 管理到处重复。Hibernate 把 JDBC 封了一层,业务不再直接拼 SQL、管连接,而是操作 Session / 对象。
2. 从分层角度看
典型三层是表示层、业务层、持久层。Hibernate 属于持久层。这一层还有 iBATIS、NHibernate、JDO、OJB、EJB 等。
3. 开源 ORM 框架
ORM 即 Object-Relational Mapping:在关系库和对象之间做映射,从对象到关系,再从关系回到对象。操作数据库时不必反复和复杂 SQL 纠缠,像操作对象一样即可——把表字段在内存里映射成对象属性。
Hibernate 的核心关系如下图:六大核心接口、两份主要配置文件,以及它们之间怎么串起来。
一句话总结:Hibernate 是持久层的 ORM,用 Session 封装 JDBC;SessionFactory 线程安全、Session 不共享,增删改查都放进事务里。
转载请注明来源:Hibernate快速学习







