2014-05-11 3 views
1

일부 학습 목적으로 두 번째 수준 캐시없이 쿼리 캐시를 구성하려고합니다. 읽기는 할 수 있지만 쿼리 캐시는 두 번째 수준 캐시에서만 작동합니다.두 번째 수준 캐시없이 쿼리 캐시 구성

여기

<property name="cache.use_query_cache">true</property> 

Entity 클래스는

@Entity 
public class Company {} 

내 구성입니다하지만 난 그렇게되면

session = factory.openSession(); 
Query getQuery=session.createQuery("from Company where companyId=1"); 
getQuery.setCacheable(true); 
Object company2 = getQuery.uniqueResult(); 
session.close(); 

session = factory.openSession(); 
getQuery=session.createQuery("from Company where companyId=1"); 
getQuery.setCacheable(true); 
company2 = getQuery.uniqueResult(); 
session.close(); 

별도의 두 쿼리는 해고된다.

내가

@Entity 
@Cacheable 
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE) 
public class Company {} 

쿼리 캐시 작업을 수행 할뿐만 아니라 두 번째 레벨 캐시를 가능하게 즉시한다. 그렇다면 두 번째 레벨 캐시를 사용하지 않고 캐시 캐시를 구성하는 방법은 무엇입니까?

답변

0

쿼리 캐시는 2 차 레벨 캐시에서 쿼리 결과를 검색하므로 작업을 수행하려면 2 차 캐시가 필요합니다. 쿼리 캐시는 쿼리 및 쿼리가 반환 한 ID 집합을 추적합니다. 그런 다음이 ID는 추가 속도 증가에서 2 차 캐시에서 검색됩니다. 2 단계 캐시가없는 쿼리 캐시는 어디에서 읽을 수 있습니까?