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

前端 未结 7 1403
长情又很酷
长情又很酷 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:33

    If you want to clear 2nd level cache, use api sessionFactory.evictEntity(entityName)

    Code:

    /**
     * Evicts all second level cache hibernate entites. This is generally only
     * needed when an external application modifies the database.
     */
    public void evict2ndLevelCache() {
        try {
            Map<String, ClassMetadata> classesMetadata = sessionFactory.getAllClassMetadata();
            for (String entityName : classesMetadata.keySet()) {
                logger.info("Evicting Entity from 2nd level cache: " + entityName);
                sessionFactory.evictEntity(entityName);
            }
        } catch (Exception e) {
            logger.logp(Level.SEVERE, "SessionController", "evict2ndLevelCache", "Error evicting 2nd level hibernate cache entities: ", e);
        }
    }
    

    For more details on 2nd level cache refer

    0 讨论(0)
提交回复
热议问题