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 );
}
}
分别是清缓存跟清实体.
浙公网安备 33010602011771号