I am using 2nd level cache and query cache. May I know how to programmatically clear all caches ?
The code snippet indicated in Bozho answer is deprecated in Hibernate 4.
According to Hibernate JavaDoc, you can use org.hibernate.Cache.evictAllRegions()
:
Evict data from all query regions.
Using the 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.
}
Alternatively, you can clear all data from a specific scope :
org.hibernate.Cache.evictCollectionRegions()
org.hibernate.Cache.evictDefaultQueryRegion()
org.hibernate.Cache.evictEntityRegions()
org.hibernate.Cache.evictQueryRegions()
org.hibernate.Cache.evictNaturalIdRegions()
You might want to check the JavaDoc for hibernate Cache interface (Hibernate 4.3).
And also, second-level cache eviction from hibernate dev guide (4.3).