myBatis

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

 

반응형
반응형

Mybatis DOCTYPE 선언문

Mybatis 설정시에 다음과 같은 오류에 직면한 적이 있다..

개발 프레임워크 설정은 자주 안하다 보니 메모..

DTD 내에 'mapper' 요소 (Element) 내에 'configuration' 라는 속성이 없다는 말이다.

DOCTYPE을 확인해 보니 mapper용 선언문을 이용해서 오류가 발생한 것...이런..

-mapper DOCTYPE

-Configuration DOCTYPE

DOCTYPE 선언시 참고..

반응형

+ Recent posts

반응형