このブログ投稿(ここで参照) では、SQLQuery は Hibernate セッション キャッシュを使用しないと述べています。ただし、a) 証拠がない、b) SQLQuery.addEntity を使用していないため、Hibernate がそのキャッシュを使用できるようにするための情報が得られる可能性があります。
ドキュメントは、何らかの方法でキャッシュすることについて言及していません。
addEntity を使用すると、SQLQuery はセッション キャッシュを使用しますか?
編集:ドキュメントのこのセクションには次のように書かれています:
オブジェクトを save()、update() または saveOrUpdate() に渡すたびに、および load()、get()、list()、iterate() または scroll() を使用してオブジェクトを取得するたびに、そのオブジェクトが追加されますセッションの内部キャッシュ。
addEntity() は list() がオブジェクトを返すことを許可するため、キャッシュを使用していることを意味します。どうすれば確認できますか? これらの同じドキュメントでは、キャッシュには「contains」メソッドがあり、2 番目のレベルのキャッシュを参照できますが、セッション キャッシュを参照する方法はありません。
編集 #2 : Hibernate クエリのロギングをオンにすることで、キャッシュしていないように見えますが、おそらくいくつかの状況でキャッシュされるでしょう。