如何使用Spring清除所有Hibernate缓存(ehcache)?
我使用的是二级缓存和查询缓存。我可以知道如何以编程方式清除所有缓存吗?
我使用的是二级缓存和查询缓存。我可以知道如何以编程方式清除所有缓存吗?
Bozho 答案中指示的代码片段在 Hibernate 4 中已弃用。
根据Hibernate JavaDoc,您可以使用:org.hibernate.Cache.evictAllRegions()
从所有查询区域逐出数据。
使用 API :
Session session = sessionFactory.getCurrentSession();
if (session != null) {
session.clear(); // internal cache clear
}
Cache cache = sessionFactory.getCache();
if (cache != null) {
cache.evictAllRegions(); // Evict data from all query regions.
}
或者,您可以清除特定范围中的所有数据:
org.hibernate.Cache.evictCollectionRegions()
org.hibernate.Cache.evictDefaultQueryRegion()
org.hibernate.Cache.evictEntityRegions()
org.hibernate.Cache.evictQueryRegions()
org.hibernate.Cache.evictNaturalIdRegions()
您可能需要检查 JavaDoc 中的休眠高速缓存接口(休眠 4.3)。
此外,从休眠开发指南(4.3)中逐出二级缓存。