사용자 도구

사이트 도구


java:jpa:cache

JPA Second Level Cache

  • Hibernate 4 기반으로 살펴보는 JPA2 Second Level Cache.
  • 아직까지 살펴본바로는, JPA 2의 @Cacheable애노테이션보다는 그냥 @org.hibernate.annotations.Cache를 사용하고 쿼리 캐시 힌트로 hibernate 기반으로 사용하는게 나은 듯 하다.
  • 아래 나오는 Property Key의 대부분은 Environment 클래스에 상수로 정의 돼 있다.

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();

참고

java/jpa/cache.txt · 마지막으로 수정됨: 2015/10/17 12:07 저자 kwon37xi