Hibernate的工作原理

Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库。

工作原理:

1.读取并解析配置文件

2.读取并解析映射信息,创建SessionFactory

3.打开Sesssion

4.创建事务Transation

5.持久化操作

6.提交事务

7.关闭Session

8.关闭SesstionFactory

Hibernate的优点

1.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

2.Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作

3、Hibernate使用Java反射机制而不是字节码增强程序来实现透明性。

4、Hibernate的性能好,映射的灵活性比较出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

hibernate的核心类

Configuration、SessionFactory、Session。

Hibernate对象的三种状态

瞬时态:一个Java对象创建之后,还没新增到数据库之前的状态

特点:

(1)不和Session实例关联

(2)在数据库中没有和瞬时对象关联的记录

持久态:当调用save()或者是saveOrUpdate()方法之后的状态,保存到数据库的状态

特点:

(1)和Session实例关联

(2)在数据库中有和持久对象关联的记录

游离态:当调用session的Close方法或者清空session之后对象的状态

特点:

(1)本质上和瞬时对象相同

(2)只是比瞬时对象多了一个数据库记录标识值id.

Hibernate对象的三种状态转换

1.瞬时对象转为持久对象

(1)通过Session的save()和saveOrUpdate()方法把一个瞬时对象与数据库相关联,这个瞬时对象就成为持久化对象。

(2)使用fine(),get(),load()和iterater()方法查询到的数据对象,将成为持久化对象。

2.持久对象转为脱管对象

(1)当执行close()或clear(),evict()之后,持久对象会变为脱管对象。

3.脱管对象转为持久对象

(1)通过Session的update(),saveOrUpdate()和lock()等方法,把脱管对象变为持久对象。

image-20220910005151064

Hibernate分页实现

image-20220910005131614