4

またはメソッドを使用すると、一次NHibernateキャッシュの恩恵を簡単に受けることができます。しかし、 、、およびはどうでしょうか。彼らも一次キャッシュを使用していますか?LoadGetICriteriaHQLLinq-to-NHibernateQueryOver

4

2 に答える 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 に答える