How to clear all Hibernate cache (ehcache) using Spring?

前端 未结 7 1421
长情又很酷
长情又很酷 2020-12-14 01:44

I am using 2nd level cache and query cache. May I know how to programmatically clear all caches ?

7条回答
  •  余生分开走
    2020-12-14 02:17

    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).

提交回复
热议问题