Hibernate中session缓存

Session缓存的实现原理

Session缓存是由它的实现类SessionImpl中定义的一些集合属性构成的,原理是保证有一个引用在关联着某个持久化对象,保持它的生命周期不会结束。Session级别的缓存又叫一级缓存。

Session缓存的作用

(1)减少DB访问频率。

应用程序从内存中读取持久化对象的速度显然比到数据库中查询数据要快得多了,所以Session的缓存可以提高数据访问性能。

(2)保证缓存中对象与DB数据同步。

位于缓存中的对象被称为持久化对象,当持久化对象的状态发生了变换,Session并不会立即执行相关SQL语句,这使得Session能够把几条相关的SQL居于合并为一条SQL语句,以便较少DB访问次数,提高效率。

Session清理缓存的时间点

(1)Transaction对象的commit( )方法

(2)Session对象的flush( )方法

持久化对象生命周期的状态

(1)临时状态(Transient):通过使用new关键字创建,还没有被持久化,不在Session的缓存中的对象处于临时状态。

(2)持久化状态(Persistent):通过Session对象的save( )方法或者saveOrUpdate()的方法保存了,处于临时状态的对象,这个对象处在缓存当中,这个对象此时处于持久化状态。

(3)游离状态(Detached):脱离了Session对象的管理,但是其标识符属性与数据库表的主键值一致的对象处于游离状态。

(4)移除状态(Removed):使用Session对象的delete( )方法删除数据,此时,由于对象失去了数据库中所有对应的数据,这个对象就处于了移除状态。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值