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
반응형