ホームページ >Java >&#&チュートリアル >Java の MyBatis フレームワークでの XML マッピング キャッシュの使用に関するチュートリアル
MyBatis には、非常に簡単に構成およびカスタマイズできる非常に強力なクエリ キャッシュ機能が含まれています。デフォルトでは、キャッシュは有効になっていません。二次キャッシュを有効にするには、SQL マッピング ファイルに次の行を追加する必要があります。
リーリー
文字通りそれです。この単純なステートメントの効果は次のとおりです:
1. マッピング ステートメント ファイル内のすべての select ステートメントがキャッシュされます。
2. マッピング ステートメント ファイル内のすべての挿入、更新、および削除ステートメントはキャッシュを更新します。
3. キャッシュは、最も最近使用されていない (LRU、最も最近使用されていない) アルゴリズムを使用して回復します。
4. スケジュールに従って (フラッシュ間隔なし、リフレッシュ間隔なしなど)、キャッシュは任意の時間順序でリフレッシュされません。
5. キャッシュには、リスト コレクションまたはオブジェクトへの 1024 個の参照が保存されます (クエリ メソッドが返す内容に関係なく)。
6. キャッシュは読み取り/書き込みキャッシュとみなされます。つまり、オブジェクトの取得は共有されず、他の呼び出し元やスレッドによる潜在的な変更を妨げることなく、呼び出し元によって安全に変更できます。
これらのプロパティはすべて、キャッシュ要素のプロパティを通じて変更できます。例えば:
このより高度な構成では、60 秒ごとにフラッシュされる FIFO キャッシュが作成され、結果オブジェクトまたはリストへの 512 個の参照が保存されます。返されたオブジェクトは読み取り専用とみなされ、異なるスレッドの呼び出し元間で変更されるため、競合が発生する可能性があります。
利用可能なエビクション戦略 (エビクション) は次のとおりです。
LRU – 最も長い間使用されていないオブジェクトを削除します。
FIFO – 先入れ先出し: キャッシュに入った順序でオブジェクトを削除します。
SOFT – ソフト参照: ガベージ コレクターのステータスとソフト参照ルールに基づいてオブジェクトを削除します。
WEAK – 弱参照: ガベージ コレクターのステータスと弱参照ルールに基づいて、より積極的にオブジェクトを削除します。
デフォルトはLRUです。
flashInterval は任意の正の整数に設定でき、適切な時間をミリ秒単位で表します。デフォルトは設定されていません。つまり、リフレッシュ間隔はなく、キャッシュはステートメントが呼び出されたときにのみリフレッシュされます。
size (参照の数) は、キャッシュするオブジェクトの数と環境で利用可能なメモリ リソースの量を考慮して、任意の正の整数に設定できます。デフォルト値は 1024 です。
readOnly プロパティは true または false に設定できます。読み取り専用キャッシュは、キャッシュされたオブジェクトの同じインスタンスをすべての呼び出し元に返します。したがって、これらのオブジェクトは変更できません。これにより、パフォーマンスに重要な利点がもたらされます。読み取り/書き込みキャッシュは、キャッシュされたオブジェクトのコピーを (シリアル化経由で) 返します。これは遅いですが安全なので、デフォルトは false です。
カスタム キャッシュを使用する
キャッシュをカスタマイズするこれらの方法に加えて、独自のキャッシュを実装するか、他のサードパーティのキャッシュ ソリューション用のアダプターを作成することによって、キャッシュ動作を完全にオーバーライドすることもできます。
この例では、カスタム キャッシュ実装の使用方法を示します。 type 属性で指定されたクラスは org.mybatis.cache.Cache インターフェースを実装する必要があります。このインターフェースは、MyBatis フレームワークにある多くの複雑なインターフェースの 1 つですが、その機能を説明するだけです。
リーリー
参照キャッシュ
おそらく、将来のある時点で、名前空間間で同じキャッシュ構成とインスタンスを共有することが必要になるでしょう。この場合、cache-ref 要素を使用して別のキャッシュを参照できます。
Java の MyBatis フレームワークでの XML マッピング キャッシュの使用に関する詳細なチュートリアルについては、PHP 中国語 Web サイトに注目してください。