マイバティスの2次キャッシュの仕組みは何か

MyBatisのセカンドレベルキャッシュはSqlSessionFactoryレベルにキャッシュされるもので、複数のSqlSessionで共有できます。

概要は以下の通りです。

  1. クエリ文が実行されると、MyBatisはまず2次キャッシュ上に対応するキャッシュデータが存在するかを確認し、存在する場合キャッシュ結果をそのまま返します。
  2. 2次キャッシュに該当するキャッシュデータがない場合、データベースで該当するクエリ文を実行し、クエリ結果を2次キャッシュにキャッシュします。
  3. 他のSqlSessionが同じクエリ文を実行した際に、2次キャッシュに該当するキャッシュデータがあるかチェックし、あればキャッシュ結果を直接返し、データベースからクエリ文を実行しない。
  4. データベースのデータに対して追加、更新、削除などの操作が行われた際は、キャッシュの一貫性を保つため、該当する2次キャッシュのデータは破棄されます。

MyBatis の2次キャッシュはデフォルトで有効になっていますが、すべてのクエリ ステートメントに2次キャッシュを使用できるわけではありません。頻繁に変更されるデータや、データの一貫性の要件が高い場合は、2次キャッシュを無効にすることをお勧めします。マッピング ファイルの、、、などのタグに “flushCache” プロパティを追加することで、キャッシュをフラッシュするかどうかを制御できます。

bannerAds