현재 Hibernate 구현체(4.3)은 JPA의 Cache.evictAll() 호출시에 모든 Region을 evict하지 않고 오로지 Entity 관련 region에 대해서만 evict를 수행한다.
전체 리젼을 다 evict하려면 Hibernate의 SessionFactory
의 Cache
구현체로 수행해야 한다.
관련 구현은 EntityManagerFactoryImpl.java에 있다.
// JPA 2.0사용시 HibernateEntityManagerFactory hemf = (HibernateEntityManagerFactory)entityManagerFactory; org.hibernate.Cache cache = hemf.getSessionFactory().getCache(); // JPA 2.1 사용시 SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class) org.hibernate.Cache cache = sessionFactory.getCache(); // 전체 eviction cache.evictEntityRegions(); cache.evictQueryRegions(); cache.evictCollectionRegions();