MyBatisの2次キャッシュ
一級キャッシュの欠陥想像してみてください.sqlSessionはスレッドが安全ではなく、メソッドボディ内部に定義されたローカル変数です.このとき、1人のユーザからリクエストが来て、もう1人のユーザからリクエストが来ましたが、この2つのリクエストは同じsqlsessionではないので、キャッシュを使用することはできません. mybatisとspringの統合後にmapperエージェントの開発を行い、一級キャッシュ、mybatisとspringの統合をサポートせず、springはmapperのテンプレートに従ってmapperエージェントオブジェクトを生成し、テンプレートでは最後にsqlsessionを統一的に閉じる.
二次キャッシュの説明
二次キャッシュの役割範囲はmapperレベル(異なるmapper.xmlは同じnamespaceを持つことができ、ここではnamespaceが同じであればよい)であり、mapperはネーミングスペース単位でキャッシュのデータ構造を作成する
二次キャッシュ、一級キャッシュ、データベースの読み込み順序
クエリーのたびに、2次キャッシュが開いているかどうかを確認します.開いている場合は、2次キャッシュからデータを取得してみます.取得されていない場合は、1次キャッシュから取得します.1次キャッシュにない場合は、データベースからデータを読み込みます.
二次キャッシュの使用
2次キャッシュは1次キャッシュとは異なり、SqlMapConfigでcacheを開くように手動で構成する必要があります.
二次キャッシュの無効化
頻繁に変更されるデータについては、2次キャッシュの使用を禁止する必要があります.要求があるたびにデータベースをクエリーする必要があります.この場合、statementで設定できます.useCache=「false」です.これは、1次バッファではなく2次キャッシュを無効にすることに注意してください.
未完
二次キャッシュの説明
二次キャッシュの役割範囲はmapperレベル(異なるmapper.xmlは同じnamespaceを持つことができ、ここではnamespaceが同じであればよい)であり、mapperはネーミングスペース単位でキャッシュのデータ構造を作成する
二次キャッシュ、一級キャッシュ、データベースの読み込み順序
クエリーのたびに、2次キャッシュが開いているかどうかを確認します.開いている場合は、2次キャッシュからデータを取得してみます.取得されていない場合は、1次キャッシュから取得します.1次キャッシュにない場合は、データベースからデータを読み込みます.
二次キャッシュの使用
2次キャッシュは1次キャッシュとは異なり、SqlMapConfigでcacheを開くように手動で構成する必要があります.
<settings>
<setting name="cacheEnabled" value="true"/>
settings>
二次キャッシュの無効化
頻繁に変更されるデータについては、2次キャッシュの使用を禁止する必要があります.要求があるたびにデータベースをクエリーする必要があります.この場合、statementで設定できます.useCache=「false」です.これは、1次バッファではなく2次キャッシュを無効にすることに注意してください.
<select id="findUserById" parameterType="int" resultType="user" useCache="false">
select * from user where id = #{id}
select>
未完