mybatis cache 설정

2014. 5. 14. 12:28
반응형
Mybatis cache 적용해 보기
  • 테스트 개발 환경
    • spring3.2.8
    • maven
    • mybatis 3.2.6
        

특별한 설정은 없는거 같다.

mybatisConfig.xml 파일에 setting cacheEnabled true 설정

  • MybatisConfig.xml
<configuration>
    <settings>
        <setting name="cacheEnabled" value="true"></setting>
        <setting name="defaultExecutorType" value="REUSE"></setting>
    </settings>
</configuration>

userMapper.xml 파일에 캐시 사용을 위한 태그 작성하고 태그 속성을 추가한다.

  • UserMapper.xml
<mapper namespace="userDao"> 
	<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/> 
    <select id="getUser" parametertype="java.util.Map" usecache="true" resulttype="String"> 
    	SELECT * FROM MEMBER WHERE ID = #{id} 
    </select>
</mapper>
  • eviction: 캐시 알고리즘 속성으로 기본은 LRU(사용빈도가 낮은것)이고 그 외에 3가지가 있음. FIFO(선입선출)
  • flushInterval: 캐시 유지 설정1분 뒤 캐시 비움.(단, 특정 시각을 정하지는 못함)
  • size: 디폴트 값은 1024이며, 메모리 여부를 확인 후 사용해야 할 듯.
  • readOnly: 캐시 데이터를 읽기만 가능하게 할지 설정. (읽기/쓰기 모두 가능한 경우에는 반환된 캐시 데이터에 대한 변경이 가능하며, 캐시 복사본을 반환한다고 함)
  • 캐시를 적용할 쿼리 속성에 userCache="true" 를 선언하면 정상적으로 작동

설정은 간단하게 마무리 됐고, 서버를 재기동 하고 로그를 확인하면 아래와 같은 로그를 확인할 수 있다.

주황색 라인에 캐시 적중률(cache Hit Ratio)을 보면 최초 0.0 에서 2번째 호출시 0.5로 올라가고 결과는 동일한 값이 노출된다. 

mybatis cache는 잘 사용을 안하는거 같고, 이외에도 Ehcache, OScache 등 좋은 오픈소스가 존재하는거 같다. 

 [참고]
http://mybatis.github.io/mybatis-3/ko/sqlmap-xml.html#cache

 

MyBatis – 마이바티스 3 | 매퍼 XML 파일

Mapper XML 파일 마이바티스의 가장 큰 장점은 매핑구문이다. 이건 간혹 마법을 부리는 것처럼 보일 수 있다. SQL Map XML 파일은 상대적으로 간단하다. 더군다나 동일한 기능의 JDBC 코드와 비교하면

mybatis.org

 

반응형

+ Recent posts