Hibernate清空二级缓存

  hibernate中的二级缓存,二级缓存是属于SessionFactory级别的缓存机制。第一级别的缓存是Session级别的缓存,是属于事务范围的缓存,由Hibernate管理,一般无需进行干预。第二级别的缓存是SessionFactory级别的缓存,是属于进程范围的缓存。

  

  南航新常客系统项目,主要用的是德国LMS的产品.在LMS的产品中,发现了如下配置,感觉是清空二级缓存.

  <bean id="clear2ndLevelCache" class="com.lpsolutions.aloysys.sp.lms.hibernatecache.HibernateCacheServiceClearCommand"></bean>
  跟源码进去

      

  我理解的意思是,先清二级缓存,在反馈出提示信息'cleared 2nd level cache'.

  进入clear2ndLevelCaches方法.

  

  先获取所有持久化类,然后清空二级缓存.

  进入getPersistenceLayers.

  

  用反射来获取所有实例,用list接收.

 

  进入clearSecondLevelCache

  

  调用的是hibernate里面的

@Override
public void evictQueryRegions() {
if ( CollectionHelper.isEmpty( queryCaches ) ) {
return;
}
for ( QueryCache queryCache : queryCaches.values() ) {
queryCache.clear();
// TODO : cleanup entries in queryCaches + allCacheRegions ?
}
}



@Override
public void evictEntityRegions() {
for ( String s : sessionFactory.getEntityPersisters().keySet() ) {
evictEntityRegion( s );
}
}

分别是清缓存跟清实体.

 

posted on 2017-06-29 16:09  nian白  阅读(319)  评论(0)    收藏  举报

导航