Hibernate快速学习

    |     2017年1月7日   |   Hibernate   |     0 条评论   |    1757

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 等。

h1

3. 开源 ORM 框架

ORM 即 Object-Relational Mapping:在关系库和对象之间做映射,从对象到关系,再从关系回到对象。操作数据库时不必反复和复杂 SQL 纠缠,像操作对象一样即可——把表字段在内存里映射成对象属性。

Hibernate 的核心关系如下图:六大核心接口、两份主要配置文件,以及它们之间怎么串起来。

h4

一句话总结:Hibernate 是持久层的 ORM,用 Session 封装 JDBC;SessionFactory 线程安全、Session 不共享,增删改查都放进事务里。

转载请注明来源:Hibernate快速学习
本文链接地址:https://ai.zhousir.top/?p=1887

上一篇:

下一篇:

回复 取消