LoginSignup
3
3

More than 5 years have passed since last update.

MyBatis3のキャッシュを無効する

Posted at

MyBatisを使って検索を行う場合、デフォルトの動作として、同一トランザクション内に同じパラメータで呼び出すと、2回目以降はSQLを発行せずに、キャッシュされているインスタンスが返却される仕組みになっています。

MyBatis3設定

MyBatis は循環参照の解決やネストされたクエリのスピード向上のためにローカルキャッシュを使用します。 デフォルト(SESSION)では同一セッション内の全てのクエリ結果がキャッシュされます。localCacheScope に STATEMENT を設定した場合、ローカルキャッシュはステートメントごとに適用されます。言い換えると、同一 SqlSession に対する複数の呼び出しでデータが共有されることはありません。

キャッシュを無効にする

以下のように設定すると、ローカルキャッシュをステートメント単位で管理するように変更できます。 ステートメント単位で管理する場合、MyBatisは毎回SQLを実行して最新のEntityを取得します。

application.properties
mybatis.config-location=classpath:/mybatis/mybatis-config.xml
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="localCacheScope" value="STATEMENT" />
    </settings>
</configuration>
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3