본문 바로가기
programming/ibatis

ibatis 캐싱관련3

by hotdogya 2012. 12. 9.

출처 : http://whistle.springnote.com/pages/4449987.xhtml

iBatis 캐싱 모델
캐싱 모델의 선언
 <cacheModel id="product-cache" implementation="LRU" readOnly="true" serialize="false">
  <flushInterval hours="24"/>
  <flushOnExecute  statement="insertProduct"/>
  <flushOnExecute  statement="updateProduct"/>
  <flushOnExecute  statement="deleteProduct"/>
  <property name="CacheSize" value="100"/>
</cacheModel>

 

implementation 속성

기존에는 type 으로 사용되던 속성으로 implementation은 캐싱방식을 지정하는 속성이다.

기본적으로 3가지가 제공되며,
LRU - 가장 오랫동안 사용되지 않은 캐시부터 삭제됩니다.


MEMORY - GC가 메모리에서 삭제할 때 까지 캐시를 메모리에 저장해 둔다.
MERMORY를 사용할 경우에는 reference-type에다 STRONG, SOFT, WEAK을 명기하여야 한다.
WEAK(default) - 대체적으로 가장 적합하며 대부분의 경우에서 최선의 선택이다.


 STRONG - 명시적으로 flush가 이뤄질 때(유지시간의 만료(flushInterval) 또는 flushOnExecute의 실행)까지 메모리에 남아있게 된다.
<cacheModel id="product-cache" implementation="MEMORY" >
  <flushInterval hours="24"/>
  <flushOnExecute statement="insertProduct"/>
  <flushOnExecute statement="updateProduct"/>
  <flushOnExecute statement="deleteProduct"/>
  <property name="Type" value="WEAK"/>
</cacheModel>
FIFO - 먼저 만들어진 캐시를 먼저 삭제한다.

ICacheController 인터페이스를 구현하여 직접 작성이 가능하다.

 

readonly 속성

readonly 속성을 true로 할당하면 모든 사용자에 걸쳐 동일한 캐시를 사용함으로 성능의 향상을 꾀할 수 있다.

만일 검색 뿐아니라 수정까지 함께 사용하려 한다면 readonly 속성을 false로 설정하여 read/write 형태로 사용하는 것을 추천한다.

속성을 설정하지 않았을때의 기본값은 true 이다.

 

serialize 속성

serialize 속성을 true로 설정하면 각 세션마다 다른 캐시를 제공하게 된다.

serializable을 사용하기 위해서는 readonly 속성이 false로 설정되어야 한다.

기본 설정값은 readonly 속성은 true, serialize 속성은 false 이다.

 

flushInterval 요소

지정된 시간마다 캐시를 삭제한다.

시간을 설정할 수 있는 속성으로는 hours, minutes, seconds, milliseconds 가 있다.

 

flushOnExecute 요소

지정한 statement가 실행될 때 캐시를 삭제한다.
만일 namespace를 사용하도록 설정되어 있는 경우에는 namespace까지 명기하여야 한다.

'programming > ibatis' 카테고리의 다른 글

ibatis 캐싱관련2  (1) 2012.12.09
ibatis 캐싱 관련1  (0) 2012.12.09
ibatis dynamic 쿼리  (0) 2012.02.06