hibernatetemplate怎么清空缓存
展开全部
关于为何要使用HibernateTemplate.clear()
一:
session.clear()的运用,尤其在不断分页循环的时候,例如
a)在一个大集合中进行遍历,遍历msg,取出其中的含有敏感字样的对象
b)另外一种形式的内存泄露 (语法级别没有 但是可由java引起)
无论是load还是get,都会首先査找缓存(一级缓存),如果没有,才会去数据库査找,调用
clear()方法可以强制清除session缓存。
二:
在Session接口的实现类中包含一系列的java集合,这些java集合构成了Session的缓存,只要Session实例没有结束生命周期,存放在它缓存中的对象也不会结束生命周期(没有结束生命周期就意味着一直占用内存)。
当Session的save()方法持久化一个对象时,对象被加入到Session的缓存中,以后即使应用程序中的变量不再引用对象,只要Session的缓存还没有被清空,对象仍然处于生命周期中。
当Session的get()方法试图从数据库中加载一个对象时。Session先判断缓存中是否已经存在这个对象,如果存在,就不需要在到数据库中检索,而直接从缓存中获得这个对象。
Session缓存的作用:
(1)、减少访问数据库的频率。应用程序从缓存中读取持久化对象的速度显然比到数据库中查询数据的速度快多了,因此Session缓存可以提高数据访问的性能。
(2)、当缓存中的持久化对象之间存在循环关联关系时,Session会保证不出现访问对象的死循环,以及由死循环引起的jvm堆栈溢出异常。
(3)、保证数据库中的相关记录与缓存中的相应对象保持同步。
一:
session.clear()的运用,尤其在不断分页循环的时候,例如
a)在一个大集合中进行遍历,遍历msg,取出其中的含有敏感字样的对象
b)另外一种形式的内存泄露 (语法级别没有 但是可由java引起)
无论是load还是get,都会首先査找缓存(一级缓存),如果没有,才会去数据库査找,调用
clear()方法可以强制清除session缓存。
二:
在Session接口的实现类中包含一系列的java集合,这些java集合构成了Session的缓存,只要Session实例没有结束生命周期,存放在它缓存中的对象也不会结束生命周期(没有结束生命周期就意味着一直占用内存)。
当Session的save()方法持久化一个对象时,对象被加入到Session的缓存中,以后即使应用程序中的变量不再引用对象,只要Session的缓存还没有被清空,对象仍然处于生命周期中。
当Session的get()方法试图从数据库中加载一个对象时。Session先判断缓存中是否已经存在这个对象,如果存在,就不需要在到数据库中检索,而直接从缓存中获得这个对象。
Session缓存的作用:
(1)、减少访问数据库的频率。应用程序从缓存中读取持久化对象的速度显然比到数据库中查询数据的速度快多了,因此Session缓存可以提高数据访问的性能。
(2)、当缓存中的持久化对象之间存在循环关联关系时,Session会保证不出现访问对象的死循环,以及由死循环引起的jvm堆栈溢出异常。
(3)、保证数据库中的相关记录与缓存中的相应对象保持同步。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询