3
내 쿼리 중 하나에 대해 쿼리 캐시를 사용하도록 설정 했으므로 테스트 또는 콘솔 응용 프로그램을 실행할 때 쿼리 캐시와 엔티티를 두 번째 수준 캐시에서 가져 와서 쿼리 결과를 가져옵니다. 그러나 WCF 서비스를 통해 동일한 쿼리를 실행하면 캐시가 손상되지 않습니다.NHibernate 쿼리 캐시 및 WCF
두 경우 모두 로그를 확인했으며 캐시가 손실 될 때까지 실제로 동일합니다.
다음[25,4244] 16:15:18,237 DEBUG[NHibernate.Cache.StandardQueryCache]: caching query results in region: 'NHibernate.Cache.StandardQueryCache'; sql: <MyQuery>; parameters: <MyParameter>; first row: 0
[25,4244] 16:15:18,238 DEBUG[NHibernate.Caches.SysCache.SysCache]: adding new data: key=NHibernate-Cache:NHibernate.Cache.StandardQueryCache:sql: <MyQuery>; parameters: <MyParameter> ; first row: [email protected]&value=System.Collections.Generic.List`1[System.Object]
은 NH의 로그가 캐시 미스 보여주는 것 : 여기
캐시 넣어 보여주는 NH의 로그입니다 여기[25,4244] 16:15:29,089 DEBUG[NHibernate.Cache.StandardQueryCache]: checking cached query results in region: 'NHibernate.Cache.StandardQueryCache'; sql: <MyQuery>; parameters: <MyParameter>; first row: 0
[25,4244] 16:15:29,089 DEBUG[NHibernate.Caches.SysCache.SysCache]: Fetching object 'NHibernate-Cache:NHibernate.Cache.StandardQueryCache:sql: <MyQuery>; parameters: <MyParameter>; first row: [email protected]' from the cache.
[25,4244] 16:15:29,095 DEBUG[NHibernate.Cache.StandardQueryCache]: query results were not found in cache: sql: <MyQuery>; parameters: <MyParameter>; first row: 0
는 캐시 히트를 보여주는 NH의 로그,의를하지 않을 때 WCF 서비스에서 :
[11,3656] 17:37:48,718 DEBUG[NHibernate.Cache.StandardQueryCache]: checking cached query results in region: 'NHibernate.Cache.StandardQueryCache'; sql: <MyQuery>; parameters: <MyParameter>; first row: 0
[11,3656] 17:37:48,718 DEBUG[NHibernate.Caches.SysCache.SysCache]: Fetching object 'NHibernate-Cache:NHibernate.Cache.StandardQueryCache:sql: <MyQuery>; parameters: <MyParameter>; first row: [email protected]' from the cache.
[11,3656] 17:37:48,728 DEBUG[NHibernate.Cache.StandardQueryCache]: Checking query spaces for up-to-dateness <MyTableName>
[11,3656] 17:37:48,729 DEBUG[NHibernate.Caches.SysCache.SysCache]: Fetching object 'NHibernate-Cache:UpdateTimestampsCache:<MyTableName>@-1403193414' from the cache.
[11,3656] 17:37:48,729 DEBUG[NHibernate.Cache.StandardQueryCache]: returning cached query results for: sql: <MyQuery>; parameters: <MyParameter>; first row: 0
여기에 쿼리를 수행하는 사용하고 코드는 다음과 같습니다
왜 캐시에 히트되지 않습니까?
예, 단일 세션 팩토리가 있습니다. 하지만 새 세션을 만들지 만 불필요한 재 초기화로 인해 무슨 뜻입니까? –