1. pom.xml

<dependency>
    <groupId>org.mybatis.caches</groupId>
    <artifactId>mybatis-ehcache</artifactId>
    <version>1.2.1</version>
</dependency>

 

2. MyBatis 각 mapper xml

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

<mapper namespace="com.tachyon.api.repository.NewsRepository">

    <!-- 
        MyBatis ehcache 설정
            - http://mybatis.org/ehcache-cache/ 
    -->	
    <cache type="org.mybatis.caches.ehcache.EhcacheCache">
    <!-- <cache type="org.mybatis.caches.ehcache.EhBlockingCache"> --><!-- blocking cache를 사용할 경우 -->
        <property name="timeToIdleSeconds" value="3600"/><!--1 hour-->
        <property name="timeToLiveSeconds" value="3600"/><!--1 hour-->
        <property name="maxEntriesLocalHeap" value="1000"/>
        <property name="maxEntriesLocalDisk" value="10000000"/>
        <property name="memoryStoreEvictionPolicy" value="LRU"/>
    </cache>
    <!-- 기본 설정을 따를 경우 이렇게 간단히 선언해도 됨 -->
    <!-- <cache type="org.mybatis.caches.ehcache.EhcacheCache"/> -->
    <!-- 
        각 statement 에 cache 적용 방법
            - 일단 xml에 cache가 선언되면 해당 xml 내의 모든 select statement에 cache가 적용된다.
            - 캐시를 적용하고 싶지 않은 statement 에 대해서는 엘리먼트 속성으로 useCache="false" 를 추가적으로 기입해 준다.
              (e.g. <select id="xxx" useCache="false")
    -->

    <select id="findUserList" resultType="LHMap">
        select *
        from jhi_user
    </select>


</mapper>

 

* 참고

MyBatis EHCache 를 필요에 따라 statement 별로 제거하기

– 캐시를 사용하지 않는 것을 기본값으로 하는 설정도 있는 것 같은데 찾아보자.