Programming

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 선언시 참고..

반응형
반응형
DataSourceTransactionManager Bean Error

org.springframework.jdbc.datasource.DataSourceTransactionManager를 bean으로 만들 때, 찾을 수 없다고 오류가 나는 경우가 있습니다.
그 경우 pom.xml에 다음과 같이 추가하면 Bean 생성이 정상적으로 동작합니다.

<dependencies>
    <!-- 다음 두 의존성을 추가해야 함 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>{org.springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>{org.springframework.version}</version>
    </dependency>
</dependencies>
반응형
반응형
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

 

Spring + Maven 프로젝트 실행 시 다음과 같은 예외에 직면할 수 있습니다.

[오류]
심각: Servlet /Mybatis threw load() exception
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)

Maven Dependency를 이용하여 추가한 Library들이 위의 Web Deployment Assembly에 등록되지 않은채 배포되기 때문에 java.lang.ClassNotFoundException 이 발생하게 된다.

Properties -> Deployment Assembly -> Add Click -> Java Build Path Entries -> Next -> Maven Dependencies -> Finish

실행하면 Console 창에 정상적인 로그가 출력됩니다.

 

반응형
반응형

 

정상적으로 실행되던 톰켓에서 아래와 같은 오류를 뱉어 낼 경우가 간혼 있다.

Setting property 'source' to 'org.eclipse.jst.jee.server:프로젝트명' did not find a matching property.

그럴 경우 톰캣 설정에 Server Option 탭에 아래와 같은 설정 후 재기동.

 


 


반응형

'Programming > Java' 카테고리의 다른 글

[Java] Collection sort  (0) 2016.01.07
[Java] GMT/UTC 날짜 변환  (1) 2015.04.08
올바른 eqals() 사용법  (0) 2014.02.07
[Java] split 문자열 나누기  (0) 2014.02.05
java e.printStackTrace 로그 남기기  (0) 2014.01.17

+ Recent posts

반응형