Hibernate框架-07-01-操作持久化对象


回收内存的方式

空引用会被回收内存

在java当中,空引用会被Java的垃圾回收机制回收掉。

在这里插入图片描述

对象在实例化时候会分配空间,即第三行才会分配空间。把内存堆区首地址赋值给C1

第4行时候也是赋值那个地址给C2;

第5行时候才会创建一个新的对象,赋新地址值给C2;

隔离引用会被回收内存

在这里插入图片描述
User对象里有个订单集合类型的属性。

缓存

在这里插入图片描述
缓存的作用就是减轻永久性存储源(在这里值数据库)的压力

Session缓存

在这里插入图片描述
内部实现就是通过内部接口一直引用。
让一个集合类型的引用一直存在。
实质就是把对象放集合当中

SessionFactory.openSession();初始化session对象,初始化Session。

在这里插入图片描述

Session查询时先看缓存,没有了才看数据库
调用get,save方法时候都是在缓存当中

在这里插入图片描述

在这里插入图片描述
清理 != 清空
清理=让缓存数据与数据库数据一致
按照Session缓存同步更新数据库

Session.flush();清理缓存,会被roulBack回滚事务
Session.close();会永久提交,不会被回滚

Load与get方法不会清理缓存,get与load方法是去读取缓存的。
会先判断缓存,所以不会读取数据库,不会读到数据库的脏数据(错误数据)

Session快照

在这里插入图片描述
save方法会把数据放到缓存,并且在缓存中建立备份(快照)
清理缓存时候会判断缓存中的数据与快照是否一致,不一致的话就会更新新数据到数据库

在这里插入图片描述
Menual:手动清理缓存,commit方法不在执行清理

在这里插入图片描述

COMMIT:适用于查询比较多,数据不太安全

Session缓存作用

在这里插入图片描述

堆栈溢出异常

在这里插入图片描述

在这里插入图片描述

不会创建新对象,二而是OID赋值;

Hibernate对象的生命周期

实体对象的生命周期

在这里插入图片描述
临时-》持久化-》游离-》删除

在这里插入图片描述
临时对象特定:缓存有记录,数据表无记录对应
持久化特点:数据库有记录,缓存也存在对应
游离对象特点:数据库可能有记录,但是缓存没有对应
被删除对象特点:不在缓存,并且计划删除数据库记录。

在这里插入图片描述
close方法会清空缓存对象并且修改缓存标志位(标识是否Session可用)
clean方法仅清空缓存

除了持久化状态吗不会被回收,其他状态都可能被回收,因为持久化状态肯定有引用。

Hibernate操作持久化对象

Session的Save()

在这里插入图片描述

Session的update()

在这里插入图片描述

可以通过第四小点的标签实现与快照一致时不更新数据库
但是会多一个查询数据库的操作,所以一般不用。

在这里插入图片描述

Session的saveOrUpdate()

在这里插入图片描述

在这里插入图片描述
默认情况,属性只要OID=null,就是临时对象
前提是引用的对象

Session的delete方法

在这里插入图片描述
在这里插入图片描述

Session的load() get()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44627608/article/details/115205958