Hibernate5的认识和原理浅析

Hibernate是封装了JDBC的一种开放源代码的对象-关系映射(ORM)框架,是程序员可以使用面向对象的思想来操作数据库。Hibernate是一种对象-关系映射的解决方案,即将java对象与对象之间的关系映射到数据库表与表的关系。

Hibernate5的工作原理
Hibernate5的认识和原理浅析
Hibernate5的工作原理如下:
首先,Configuration读取Hibernate5的配置文件hibernate.cfg.xml和映射文件*.hbm.xml中的信息,即加载配置文件和映射文件,并通过Hibernate5配置文件生成一个多线程的SessionFactory对象;然后,多线程SessionFactory对象生成一个线程Session对象;Session对象生成Query对象或者Transaction对象;可通过Session对象的get()、load()、save()、update()、delect()和saveOrUpdate()等方法对PO进行加载、保存、更新、删除等;也可利用Query对象执行查询操作;如果没有异常,Transaction对象将提交这些数据到数据库中。

也许这样各位读者还没有十分清楚Hibernate5,那么接下来我们来聊一聊Hibernate5的核心组件。
Hibernate5的核心组件位于业务车持久化层之间。其中包括Hibernate配置文件(hibernate.cfg.xml或者hibernate.properties)、映射文件(xxx.hbm.xml)和持久化类(Persistent Objects,PO)。

1、Configuration
Configuration负责配置并启动Hibernate5,创建SessionFactory对象。

2、SessionFactory
SessionFactory负责初始化Hibernate5。它充当数据存储源的代理,并负责创建Session对象,这里用到了工厂模式,SessionFactory是产生Session实例的工厂。而一个数据库就是一个SessionFactory对象。

3、Session
Session负责执行持久性对象的操作,它用get()、load()、save()、update()和delect()等方法来对PO进行加载、保存、更新及删除等操作。但要注意的是Session对象是非线程安全的。同时,Hibernate5的Session不同于JSP应用中的HttpSession。

4、Transaction
Transaction负责事务相关的操作,用来管理HIbernate5事务,他的主要方法有commit()(提交一个事务)和rollback()(回滚一个事务),可以使用Session的beginTransaction()方法生成。它是可选的。

5、Query
Query负责执行各种数据库查询。它可以使用HQL语言对PO进行查询操作。Query对象可以使用Session的createQuery()方法生成。

6、Hibernate5的配置文件
Hibernate5的配置文件主要用来配置数据库连接参数,例如,数据库的驱动程序、URL、用户名和密码、数据库方言等。它有两种形式:hibernate.cfg.xml和hibernate.properties。两者的配置内容基本相同,但前者比后者使用方便一点。一般情况下,hibernate.cfg.xml是Hibernate5的默认配置文件。

7、映射文件
映射文件用来把PO与数据库中的表、PO之间的关系与表之间关系以及PO的属性与表字段一一映射起来,它是Hibernate5的核心文件。

8、持久化对象
持久化对象(PO)可以是普通的JavaBean,唯一特殊的是它们与Session相关联。PO在Hibernate5中存在三种状态:临时状态(Transient)、持久化状态(Persistent)和脱管状态(Detached)。