Session的缓存

Session中的缓存可以理解为一个Hibernate应用中处于持久状态对象的集合。当Session的load方法视图从数据库中加载某个对象时,Session会先判断在缓存中是否已经存在这个对象了,如果存在就不需要到数据库中进行检索。只要Session的缓存没有被清空,持久对象的生命周期便没有结束。

Session中的缓存清空与缓存的清理是两个概念。缓存清空是指将缓存内的持久对象进行清除,持久对象在缓存清空之后便结束了其生命周期,一般在调用close()和clear()等方法的时候进行缓存的清空。

Session的缓存的清理是指每隔一段时间,Session执行SQL语句的时候将内存中的对象的状态同步到JDBC链接中。一般默认调用org.hiberbate.Transaction.commit()方法、Session的flush()方法以及执行某些查询的时如:find()和iterate()方法进行清理。

注意的是,如果使用标示方法是native,那么在调用save()方法的时候会立即执行insert语句。


Session.flush()操作进行缓存清理时,会执行上述SQL语句,但是不会提交事务。Transaction.commit()方法会先执行flush()方法,然后提交事务。

除了默认的时间点进行缓存的清理之外,也可以改变默认的设置,来控制清理操作的发生频率。

FlushMode类定义了三种不同的方式,可以通过Session.setFlushMode()方法进行设置。

1.FlushMode.AUTO:于默认的清理方式相同。

2.FlushMode.COMMIT:在执行commit方法和flush方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值