java session缓存_理解Session缓存

本文详细介绍了Java Hibernate中的Session缓存,包括其作用、清理机制以及对象在持久化层的状态转换。Session缓存可以减少数据库访问,处理关联关系,并在特定时间点自动更新数据库。此外,还讨论了Session的持久化操作如save()、get()和load()方法的行为特点。
摘要由CSDN通过智能技术生成

1. Session缓存

为了让对象A一直处于生命周期中,要么对象A被显示引用,要么对对象A的引用保存在始终处于生命周期中的对象B中,直到对象B的生命周期结束而结束。在Session接口的实现中包含了一系列的Java集合,这些集合用于保存对持久化对象的引用,因此这些Java集合就构成了Session的缓存。

当调用Session接口的save()方法持久化一个对象时,该对象被加入到Session缓存中,以后只要Session缓存没有被清空,该对象将一直处于生命周期中。

当调用Session接口的get()方法试图装载一个持久化对象时,Session首先判断缓存中是否存在这个对象,若存在则返回,若不存在则从数据库中检索。

05ab41916393ca8dd6b380fb7e82aa76.png

2. Session缓存的作用

(1) 减少访问数据库的频率。应用程序从缓存中读取持久化对象的速度显然优于从数据库中检索数据的速度。

(2) 当缓存中的持久化对象之间存在循环关联关系时,Session会保证不出现访问对象图的死循环,以及由死循环引发的JVM堆栈溢出。

(3) 保证数据库中的相关记录与缓存中的记录同步。Session在清理缓存的时,会自动进行脏数据检查(dirty-check),如果发现Session缓存中的对象与数据库中相应记录不一致,则会按最新的对象属性更新数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值