2012-10-30 2 views
4

NHibernate 질의 캐시의 만료를 구성 할 수 있습니까?NHibernate 질의 캐시의 만기

두 번째 레벨 캐시의 경우 nhibernate.cfg.xml에서 처리 할 수 ​​있지만 SQL 쿼리 캐시를 찾을 방법이 없습니다.

편집 :

ICriteria query = CreateCriteria() 
        .Add(Expression.Eq("Email", identifiant)) 
        .SetCacheable(true) 
        .SetCacheRegion("X"); 



<syscache> 
    <cache region="X" expiration="10" priority="1" /> 
    </syscache> 
+0

Francois, 설정이 정상적인 것 같아서 nhibernate.cfg.xml 파일에서 중요한 설정 중 하나에 대한 대답을 확장했습니다. 어쩌면 이것은 누락 된 조각 일 것입니다. –

답변

6

예, 우리는 지역을 통해 캐시 만료를 설정할 수 있습니다. 이 같은 쿼리를 조정합니다

criteria.SetCacheable(true) 
    .SetCacheMode(CacheMode.Normal) 
    .SetCacheRegion("LongTerm"); 

을 그리고 web.config 파일에 유사한 구성을 넣어

<configSections> 
    <section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler, NHibernate.Caches.SysCache" requirePermission="false" /> 
</configSections> 
<syscache> 
    <cache region="LongTerm" expiration="180" priority="5" /> 
    <cache region="ShortTerm" expiration="60" priority="3" /> 
</syscache> 

편집 : 난 그냥이 링크 Class-cache not used when getting entity by criteria 를 추가하고하는 것은 내가 SQL에 의해 무슨 뜻인지 확인하려면 쿼리 캐시. 링크 된 답변에서 나는 그 주제를 설명하고있다

명확성을 위해서. NHibernate에 "세션 공장"의 구성이 포함되어야합니다

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

이 스위치는 쿼리 캐시 작업을 할 것입니다. 세부 정보 : http://nhibernate.info/doc/nh/en/index.html#performance-querycache

+0

질문은 특히 2 차 수준 캐시에 관한 것이 아닙니다. –

+0

용어 SQL 쿼리 캐시 란 무엇입니까? 다음과 같이 선언 된 구성 파일에있는 클래스 캐시가 있습니다. true. 쿼리 캐시는 true입니다. 그리고 내 대답은 그와 관련이 있습니다. 쿼리의 캐시 (캐싱 된 기준 결과 - ** 쿼리 캐시 **) –

+0

네가 옳다. 나는 사고 사고를당한 사람이다. –