문서의 이전 판입니다!
Map<String,Object> props = new HashMap<String,Object>();
props.put(Environment.USE_SECOND_LEVEL_CACHE, true); // hibernate.cache.use_second_level_cache
props.put(Environment.USE_QUERY_CACHE, true); // hibernate.cache.use_query_cache
props.put(Environment.CACHE_REGION_FACTORY, CachingRegionFactory.class.getName()); // hibernate.cache.region.factory_class - 캐시 구현체 지정
props.put(Environment.CACHE_REGION_PREFIX, "cachetest"); // hibernate.cache.region_prefix
props.put(Environment.DEFAULT_CACHE_CONCURRENCY_STRATEGY, CacheConcurrencyStrategy.READ_WRITE); // hibernate.cache.default_cache_concurrency_strategy
// ...
EntityManagerFactory emf = Persistence.createEntityManagerFactory("cachetest", props);
@Entity @Table(name = "books") @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "books") public class Book implements Serializable { .... }
org.hibernate.cache.internal.StandardQueryCache region에 캐시 결과를 저장한다.setHint를 통해 캐시하도록 지정TypedQuery<Book> query = em.createNamedQuery("Book.byEdition", Book.class); query.setParameter("edition", 3); query.setHint("org.hibernate.cacheable", true); query.setHint("org.hibernate.cacheRegion", "book-by-edition"); // region 지정
NamedQuery에 지정@Entity @Table(name = "books") @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "books") @NamedQuery(name = "Book.byEdition", query = "from Book where edition=:edition", hints = { @QueryHint(name = "org.hibernate.cacheable", value = "true"), @QueryHint(name = "org.hibernate.cacheRegion", value = "book-by-edition") } ) public class Book implements Serializable { .... }