문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
java:jpa:cache [2014/06/07 23:46] kwon37xi [Query Cache] |
java:jpa:cache [2015/03/17 14:00] kwon37xi |
||
---|---|---|---|
줄 2: | 줄 2: | ||
* Hibernate 4 기반으로 살펴보는 JPA2 Second Level Cache. | * Hibernate 4 기반으로 살펴보는 JPA2 Second Level Cache. | ||
* 아직까지 살펴본바로는, | * 아직까지 살펴본바로는, | ||
+ | * 아래 나오는 Property Key의 대부분은 [[https:// | ||
+ | |||
+ | ===== Evict All ===== | ||
+ | 현재 Hibernate 구현체(4.3)은 JPA의 Cache.evictAll() 호출시에 모든 Region을 evict하지 않고 오로지 Entity 관련 region에 대해서만 evict를 수행한다. | ||
+ | |||
+ | 전체 리젼을 다 evict하려면 Hibernate의 '' | ||
+ | 관련 구현은 [[https:// | ||
+ | |EntityManagerFactoryImpl.java]]에 있다. | ||
- | ===== Entity Cache ===== | ||
<code java> | <code java> | ||
- | @Entity | + | // JPA 2.0사용시 |
- | @Table(name = " | + | HibernateEntityManagerFactory hemf = (HibernateEntityManagerFactory)entityManagerFactory; |
- | @org.hibernate.annotations.Cache(usage | + | org.hibernate.Cache |
- | public class Book implements Serializable { | + | |
- | .... | + | |
- | } | + | |
- | </ | + | |
+ | // JPA 2.1 사용시 | ||
+ | SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class) | ||
+ | org.hibernate.Cache cache = sessionFactory.getCache(); | ||
- | ===== Query Cache ===== | + | // 전체 eviction |
- | * '' | + | cache.evictEntityRegions(); |
- | TypedQuery< | + | cache.evictQueryRegions(); |
- | query.setParameter(" | + | cache.evictCollectionRegions(); |
- | + | ||
- | query.setHint(" | + | |
- | query.setHint(" | + | |
</ | </ | ||
- | * '' | ||
- | @Entity | ||
- | @Table(name = " | ||
- | @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE, | ||
- | @NamedQuery(name = " | ||
- | query = "from Book where edition=: | ||
- | hints = { | ||
- | @QueryHint(name = " | ||
- | @QueryHint(name = " | ||
- | } | ||
- | ) | ||
- | public class Book implements Serializable { | ||
- | .... | ||
- | } | ||
- | </ |