この記事では主に、2次キャッシュに関するMyBatisの問題を紹介します。2次キャッシュは、複数のSQLSessionが同じMapperを動作させる場合、その2次キャッシュを共有することができます。
MyBatis は 1 次キャッシュと 2 次キャッシュを提供します。1 次キャッシュは sqlSession レベルのキャッシュであり、異なる sqlSession 間のキャッシュは相互に影響しません。 2次キャッシュはMapperレベルのキャッシュであり、複数のsqlSessionが同じMapper上で動作し、その2次キャッシュを共有することができます。Memcached のサポートは比較的成熟しています。ここでは、Memcached を例として Spring プロジェクトとの統合を紹介します。
configuration
を使用してpom.<dependencies> ... <dependency> <groupId>org.mybatis.caches</groupId> <artifactId>mybatis-memcached</artifactId> <version>1.0.0</version> </dependency> ... </dependencies>
グローバルスイッチ
<settings> <setting name="cacheEnabled" value="true"/> </settings>
キャッシュする必要があるmapper.xmlを設定します
2次キャッシュはMapperレベルであり、特定のmapper.xmlに対して2次キャッシュをオンにすることができます。<mapper namespace="org.acme.FooMapper"> <cache type="org.mybatis.caches.memcached.MemcachedCache" /> </mapper>
namespace の下にあるすべての insert、update、および delete ステートメントにより、スペース内のキャッシュがクリアされます。
キャッシュは特定のステートメントに対して無効にすることができます。<select id="retObj" resultMap="results" useCache="false" > select id, name, sex from employee </select>
update、delete ステートメントに対応します)。
<select id="retObj" resultMap="results" flushCache="true" > select id, name, sex from employee </select>
キャッシュ操作ログを記録する必要がある場合は、次の設定で実現できます
<mapper namespace="org.acme.FooMapper"> <cache type="org.mybatis.caches.memcached.LoggingMemcachedCache" /> ... </mapper>
Exception が報告されます。
2次キャッシュの適用シナリオ
実装方法は以下の通りです。
mybatis の制限事項
mybatis の 2 次キャッシュは、きめ細かいデータ レベルのキャッシュが苦手です。以上が二次キャッシュの問題に関する MyBatis コード例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。