0

L1(セッション)キャッシュのみでHibernateを使用しています。事前入力が可能かどうか疑問に思いました。

Item各アイテムに独自のテーブルがありid、「」のようなクエリを発行する必要があるとしfrom Item where id = :idます。すべてのアイテムを一度にプリロードできれば、応答時間を短縮できます(サーブレットのHibernateを使用しています。 Tomcat)。

4

1 に答える 1

-1

はい、それは可能です。selectを1回実行すると(where条件なしで、結果のリストを使用せずに)、セッションをクリアするか破棄するまで、データはセッションの第1レベルのキャッシュにあります。

ただし、その場合、セッション自体がプリロードされたデータをキャッシュから破棄するかどうかを制御することはできません(これは機能上の問題ではなく、パフォーマンスの問題であり、使用している休止状態のバージョンでは決して実行されないように感じます)それで)。フルコントロールが必要な場合は、プリロードされたデータを静的変数(ListまたはMapインスタンス)に格納し、データベースからではなく、この静的変数から読み取るサービスを作成します。ちなみに、ご使用の環境では、この静的変数へのアクセスを同期する必要があります。

于 2012-05-30T10:15:28.347 に答える