NHibernate의 첫 번째 레벨 캐시는 동일한 세션을 사용할 때 사용 가능합니다. ActiveRecordBase.FindAll()
을 입력하면 매번 ISession
이 새로 생성됩니다. 그래서 다음과 같은 첫 번째 수준의 캐시에서 이익을하실 수 없습니다 :ActiveRecordBase.FindAll()은 1 차 캐시를 허용하지 않습니까?
어떤 해결책이 있습니까?
NHibernate의 첫 번째 레벨 캐시는 동일한 세션을 사용할 때 사용 가능합니다. ActiveRecordBase.FindAll()
을 입력하면 매번 ISession
이 새로 생성됩니다. 그래서 다음과 같은 첫 번째 수준의 캐시에서 이익을하실 수 없습니다 :ActiveRecordBase.FindAll()은 1 차 캐시를 허용하지 않습니까?
어떤 해결책이 있습니까?
여러 개의 FindAll()
을 호출해도 여러 세션이 강제 실행되지 않습니다. 그들은 모두 동일한 세션을 사용합니다. FindAll()
이 이점을 누릴 수없는 이유는 내부적으로 ICriteria
및 ICriteria
자체가 1 차 캐시를 사용할 수 없기 때문입니다. 1 차 수준 캐시는 Load
및 Get
에 대해서만 사용할 수 있습니다.
자세한 정보는 here입니다.
첫 번째 수준 캐시 (세션 기반) 만 사용해야하는 것은 아닙니다. 두 번째 레벨 캐시를 사용하도록 설정할 수 있습니다.
첫 번째 및 두 번째 수준 캐시의 활성에 대한 정보는 여기를 참조하십시오. http://web.archive.org/web/20110514214657/http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/11/09/first-and-second-level-caching-in-nhibernate.aspx