如何使用Spring清除所有Hibernate缓存(ehcache)?

2022-09-01 18:42:29

我使用的是二级缓存和查询缓存。我可以知道如何以编程方式清除所有缓存吗?


答案 1

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)中逐出二级缓存


答案 2

清除会话缓存使用session.clear()

要清除第二级缓存,请使用此代码段


推荐