MyBatisの一次キャッシュと二次キャッシュの違いは何ですか?

MyBatisの一次キャッシュは、SqlSessionレベルのキャッシュであり、同じSqlSessionで同じクエリを実行すると、最初のクエリ結果がキャッシュされ、その後も同じクエリを実行すると、結果がキャッシュから直接取得され、クエリの効率が向上します。しかし、一次キャッシュの寿命は短く、SqlSessionが閉じられるとキャッシュも無効になります。

二次キャッシュは、マッパーレベルのキャッシュであり、複数のSqlSessionが同じマッパーのキャッシュを共有します。クエリを実行する際、MyBatisはまず二次キャッシュで結果を検索し、それを見つけた場合は直接結果を返しますが、見つからない場合はデータベースを再検索して結果を二次キャッシュに保存します。二次キャッシュの寿命は比較的長く、SqlSessionを越えてデータを共有することができますが、有効にするためには設定と構成が必要です。

bannerAds