2011-09-27 2 views

답변

3

MyBatis에서의 캐시는 매우 간단합니다. 문서 기본적

(설명서 http://mybatis.googlecode.com/svn/trunk/doc/en/MyBatis-3-User-Guide.pdf의 42 페이지) 당 캐싱 성능 향상 및 순환 종속성을 해결하기 위해 요구되는 로컬 세션 캐싱을 제외하고, 활성화되지있다. 캐시의 두 번째 레벨을 사용하려면, 당신은 단순히 당신의 SQL 매핑 파일에 한 줄을 추가해야합니다 의 MyBatis 3 - 사용자 가이드 2011년 6월 6일 43

<cache/> 

을 그대로 그게입니다. 이 일을하면서

일반적인 함정은 내가했다 : 당신은 캐시 요소를 추가 매퍼에

을; 종속 엔티티가있는 경우, 필요할 때 명시 적으로 캐시를 비우십시오. 캐시 요소를 설정 한 매핑 요소의 삽입, 업데이트, 삭제시 플러시가 이미 수행되었지만 다른 XML 매핑에 정의 된 업데이트/삭제/등으로 인해 캐시를 플러시해야하는 경우가 있습니다.

기본적으로 캐싱에 대해 생각할 때 "이 엔티티가 변경되면 다른 매핑의 엔티티에 대한 캐시를 비우고 싶습니까?"라고 자문해야합니다. 대답이 '예'인 경우 그냥 캐시가 아닌 cache-ref 요소를 사용하십시오. 해당 문서의 45 페이지에서

예 :

<cache-ref namespace=”com.someone.application.data.SomeMapper”/> 
+0

네,하지만이 상태가없는 웹 서비스가 아닌 MVC 응용 프로그램입니다. 나는 세션이 없다. – aks

+1

MyBatis에서의 캐싱은 모두 내부적으로 수행됩니다. 어떤 문맥에 관계없이 던져 넣기로 결정합니다. 따라서 "범위 및 수명주기"섹션 (10 페이지)의 지침을 따르는 한 중요하지 않아야합니다. 캐싱은 잘 작동합니다. 따라서 SqlSessionFactoryBuilder를 사용하여 SqlSessionFactory를 만드십시오. SqlSessionFactory의 인스턴스가 싱글 톤인지 확인하고 모든 요청에 ​​대해 새 SqlSession을 만드는 데 사용하십시오. – Dave