Mybatisキャッシュ-Mybatis(11)

レベル1キャッシュ

  最初のレベルのキャッシュはSqlSessionレベルのキャッシュであり、SqlSessionにフラッシュまたはクローズがない限り存在します。

  SqlSessionの変更、追加、削除、コミット()、クローズ()およびその他のメソッドを呼び出すと、1次キャッシュがクリアされます。

  初めてユーザーID 1のユーザー情報をクエリするときは、最初にキャッシュに移動して、ID 1のユーザー情報があるかどうかを確認し、ない場合は、データベースからユーザー情報をクエリします。

  ユーザー情報を取得すると、ユーザー情報は1次キャッシュに格納されます。

  sqlSessionがコミット操作を実行する場合は、SqlSessionの第1レベルのキャッシュをクリアします。これの目的は、キャッシュに最新の情報を保存させ、ダーティリードを回避することです。

  ユーザーID 1のユーザー情報を照会する2回目は、最初にキャッシュに移動して、ID 1のユーザー情報があるかどうかを確認し、キャッシュにある場合は、キャッシュから直接ユーザー情報を取得します。

 

二次キャッシュ

  2次キャッシュはマッパーマップレベルキャッシュであり、複数のSqlSessionがマッパーによってマップされた同じSQLステートメントで動作します。

  複数のSqlSessionが2次キャッシュを共有でき、2次キャッシュはSqlSession全体に存在します。

  Mybatisの2次キャッシュをオンにした後、SqlSession1はユーザー情報を照会し、照会されたユーザー情報は2次キャッシュに照会データを格納します。

  SqlSession3が同じマッパーマップの下でSQLを実行し、コミットを実行すると、マッパーマップの下の2次キャッシュ領域のデータは消去されます。

  SqlSession2は、SqlSession1と同じユーザー情報を照会するために、キャッシュから直接データがある場合は、最初にキャッシュからのデータがあるかどうかを調べます。

  

2次キャッシュのオンとオフを切り替える

  SqlMapConfig、xmlファイルで2次キャッシュを開く

<settings> 
  <!-セカンダリキャッシュサポートをオンにする-> <setting name = "cacheEnabled" value = "true" /> 
</ settings> cacheEnabledの値はデフォルトtrue であるため、この手順は省略できます。構成。ある真の二次キャッシュのオープン代表;され偽の二次キャッシュの代表がオンになっていません。

  関連するマッパーマッピングファイルを構成します。<cache>タグは、現在のマッパーマッピングが2次キャッシュを使用することを示します。区別する標準は、マッパー名前空間の値によって異なります。

<?xml version = "1.0" encoding = "UTF-8"?> 
<!DOCTYPEマッパー
 PUBLIC "-// mybatis.org//DTD Mapper 3.0 // EN" 
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 

<mapper namespace = "com.itcast.dao。 IUserDao ">   <!-开启二级缓存的サポート->   <cache> </ cache> </ mapper>

  ステートメントのuseCache属性を構成する

<!-根拠id查询-> 
<select id = "findById" resultType = "user" parameterType = "int" useCache = "true">   select * from user where id = #{uid} </ select>

  UserDao.xmlマッピングファイルの<select>タグでuseCache =” true”を設定して、現在のステートメントが2次キャッシュを使用する必要があることを示します。使用しない場合は、falseに設定できます。注:最新のデータsqlを必要とするクエリごとに、useCache = falseを設定して、2次キャッシュを無効にする必要があります。

 

  2次キャッシュを使用する場合、キャッシュされたクラスはjava.io.Serializableインターフェースを実装する必要があります。これは、直列化使用してオブジェクトを保存できます。

 

おすすめ

転載: www.cnblogs.com/guancangtingbai/p/12679683.html