목차

JPA Second Level Cache

Evict All

현재 Hibernate 구현체(4.3)은 JPA의 Cache.evictAll() 호출시에 모든 Region을 evict하지 않고 오로지 Entity 관련 region에 대해서만 evict를 수행한다.

전체 리젼을 다 evict하려면 Hibernate의 SessionFactoryCache 구현체로 수행해야 한다. 관련 구현은 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();

참고