またはメソッドを使用すると、一次NHibernate
キャッシュの恩恵を簡単に受けることができます。しかし、 、、およびはどうでしょうか。彼らも一次キャッシュを使用していますか?Load
Get
ICriteria
HQL
Linq-to-NHibernate
QueryOver
質問する
719 次
2 に答える
5
エンティティを返すために使用しますが、2 番目のレベルのキャッシュを使用しない限り、クエリはデータベースに直接送信されます。
このことを考慮:
var fooUsingGet = session.Get<Foo>(fooId);
var fooQueryById = session.Query<Foo>().Single(f => f.Id == fooId);
2 つのクエリが実行されますが (1 つは Get 用、もう 1 つは Query 用)、両方の変数に同じオブジェクト参照が含まれています。
ここで、第 2 レベルのキャッシュ、クエリ キャッシュを有効にし、クエリのキャッシュを指定すると、次のようになります。
var fooQueryById = session.Query<Foo>().Cacheable()
.Single(f => f.Id == fooId);
var fooQueryByIdAgain = session.Query<Foo>().Cacheable()
.Single(f => f.Id == fooId);
1 つのクエリのみが実行されます。
于 2011-02-07T12:18:15.157 に答える
0
いいえ、私が理解しているように、そうではありません。二次キャッシュのみを使用します。最初のレベルのキャッシュは と のみGet
ですLoad
。
于 2011-02-07T09:30:10.660 に答える