Mybatis は優れた ORM フレームワークですが、アプリケーション システムで多数のデータベース操作が必要な場合、データベースへのアクセスがシステムのパフォーマンスのボトルネックになります。したがって、システムのパフォーマンスを向上させるには、システム内でキャッシュを使用する必要があります。Mybatis は、クエリ結果をメモリにキャッシュし、データベース アクセスの数を減らすことができる、シンプルで使いやすい 2 次キャッシュ メカニズムを提供します。ehcache は高性能 Java キャッシュ フレームワークであり、システムのパフォーマンスを効果的に向上させることができます。この記事では、Mybatis を使用して ehcache を統合し、2 次キャッシュを実装する方法を紹介します。
ステップ
- ehcache と mybatis-ehcache の依存関係を導入する
次の依存関係を pom.xml に追加します。
<dependency>
<groupId>org.mybatis.caches</groupId>
<artifactId>mybatis-ehcache</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.6.11</version>
</dependency>
- ehcache.xml ファイルを構成する
src/main/resources ディレクトリに ehcache.xml ファイルを作成し、次の内容を追加します。
<ehcache>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="false"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
<cache
name="com.example.MyMapper"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
overflowToDisk="false"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
</ehcache>
このうち、defaultCache はデフォルトのキャッシュ構成であり、cache 要素の name 属性は Mybatis 構成ファイルの名前空間と一致している必要があります。
- Mybatis 構成ファイルで ehcache を構成する
次の設定を Mybatis 設定ファイルに追加します。
<cache type="org.mybatis.caches.ehcache.EhcacheCache"/>
- Mapper.xml ファイルの 2 次キャッシュを開きます。
次の構成を Mapper.xml ファイルに追加します。
<cache type="org.mybatis.caches.ehcache.EhcacheCache"/>
- テストキャッシュ
テスト コードでクエリ操作を実行すると、最初のクエリがデータベースからデータを取得して ehcache にキャッシュし、2 番目のクエリがキャッシュから直接データを取得するため、クエリ効率が向上することがわかります。
要約する
Mybatis を使用して ehcache を統合し、2 次キャッシュを実現すると、システムのパフォーマンスを効果的に向上させることができます。使用中は、システムのパフォーマンスに対するキャッシュの悪影響を回避するために、キャッシュの構成とキャッシュのクリーニング戦略に注意を払う必要があります。