【Mybatisソースコード解析】一次キャッシュ、二次キャッシュのソースコード解析

前回の記事「【Mybatisソースコード解析】マッパーのインスタンス化と実行処理のソースコード解析」では主にMybatisの基本原理と一次実行処理について説明しましたが、本章ではMybatisの2つのキャッシュである一次キャッシュと一次キャッシュについて説明します。二次キャッシュ。

インターネットのほとんどはキャッシュを使用するために XML 設定方法を使用しているため、ここではアノテーション方法について説明します。

一级缓存
第 1 レベルのキャッシュは SqlSession レベルです。1 次キャッシュのスコープは SqlSession であり、Mabits はデフォルトで 1 次キャッシュを有効にします。同じ SqlSession 内で同じ SQL クエリを実行する場合、1 回目はデータベースにクエリを実行してキャッシュに書き込み、2 回目はキャッシュから直接フェッチします。SQL が実行されると、2 つのクエリ間で追加、削除、変更が行われ、SqlSession のキャッシュがクリアされます。

一次キャッシュ Mybatis は内部で HashMap を使用しており、キーは hashcode+statementId+sql ステートメントです。値は、クエリ結果セットにマップされた Java オブジェクトです。SqlSession は、挿入、更新、削除などの操作を実行した後、SqlSession キャッシュをクリアします。

  1. MyBatis レベル 1 キャッシュのライフ サイクルは、SqlSession のライフ サイクルと一致しています。localCache は、各更新が実行される前に空になります。

  2. MyBatis レベル 1 キャッシュの内部設計はシンプルですが、容量制限はありません

おすすめ

転載: blog.csdn.net/CSDN_SAVIOR/article/details/129078396