キャッシュ:デフォルトで有効になって
- MyBatisのキャッシュのライフサイクルとSQLSESSION一貫。
- 内部キャッシュは機能キャッシュに欠けている、シンプルなデザインをMyBatisのが、HashMapの定義された能力なし。
- MyBatisのは、SQLSESSIONまたは分散環境、データベースへの書き込み複数のダーティデータを引き起こす可能性がある場合、内部キャッシュSQLSESSIONの最大範囲であります
- ダーティな理由:SQLSESSIONいくつかのクエリ操作で実行するが、別のSQLSESSIONの途中でこれらのクエリ操作は、データベースを更新するために、このアップデート最初SQLSESSIONが全く認識されない、この時点ではまだ行くの問い合わせでありますクエリキャッシュ
- キャッシュミスがMyBatisのバネを使用して(その理由を理解していません)
二次キャッシュ:デフォルトではオフ
ライフサイクルの名前空間
ステップ2キャッシュオープン:オープングローバルキャッシュ(設定はデフォルトで有効)
mapper.xmlの対応する開口における二つ
時間SQLSESSIONがクローズまたはクエリにデータを送信しない場合は、二次キャッシュをキャッシュしません
- MyBatisの二次キャッシュを実現に関してキャッシュされ
SqlSession
、それが可能であるより微細な粒子サイズが、キャッシュ間のデータの共有namespace
レベル、キャッシュインターフェースクラスを介して制御の異なる組み合わせも強いキャッシュであります。 - マルチテーブルクエリでMyBatisのは、ほとんどの場合、設計上の欠陥、二次キャッシュ比較的厳しい外観を安全に使用するための条件がある(別の名前空間の名前空間を変更キャッシュ認識していない)ダーティなデータとなります。
- 分散環境では、キャッシュMyBatisのをベースにデフォルトの実装のためには、ローカル、分散環境下でバインドされているが、ダーティデータを読み取るために表示され、キャッシュはキャッシュMyBatisのインターフェース集中使用する必要があります、特定の開発コストは、直接的ありますRedisの、Memcachedの分散キャッシュやその他の潜在的な低コストを使用し、セキュリティも高く、
要約:
- すべてのマップされた文ファイル、更新、削除の文は(プライマリおよびセカンダリ)キャッシュを空にします挿入します。
- ディーパー:https://tech.meituan.com/2018/01/19/mybatis-cache.html