IBatis Cache
From JCFWiKi
Copyright © 2008 Daewoo Information Systems Co., Ltd. |
|
빈번히 쓰이는 데이터의 캐시처리에 관한 문서이다. |
|
목차 |
[편집] 개요
코드와 같이 select 하는 데이터가 빈번하게 사용되는 경우, 조회시 매번 DB IO를 발생시키게 된다.
어플리케이션 성능을 저하시키는 DB IO를 줄이고, 대신 select 한 데이터를 캐시하고 있게 되면 성능개선효과를 가져올 수 있다.
Statement의 where 조건을 기준으로 데이터를 캐시한다.
[편집] 캐시 설정
[편집] 저장 옵션
- imlementation(캐시 모델이 저장되는 형태)은 다음 네 가지 중 선택한다.
- MEMORY - GC가 메모리에서 삭제할 때까지 캐시를 메모리에 저장해둔다.
- FIFO - 먼저 만들어진 캐시를 먼저 삭제한다.
- LRU - 가장 오랫동안 사용되지 않는 캐시부터 삭제한다.
- OSCACHE - OpenSymphony Cache를 사용한다.
[편집] 하위 옵션
- flushInterval
- 특정 시간단위마다 cache를 삭제하기 위한 옵션이다.
- hours, minutes, seconds, milliseconds등을 지정할 수 있다.
- flushOnExecute
- 지정한 statement가 실행될때 cache를 삭제하는것을 의미한다.
- Namespace를 사용하는 상황이라면 Namespace.statement 로 지정을 해줘야 한다.
- property의 size
- 해당 cacheModel이 소유하고 있을 cache의 최대 갯수를 의미한다.
- Cache 갱신 조건(예제)
매 24시간 주기로 갱신 insertProduct, updateProduct, deleteProduct 문이 실행시 갱신 Cache 사이즈: 1000 Kbyte
<cacheModel id="product-cache" imlementation="LRU"> <flushInterval hours="24"/> <flushOnExecute statement="insertProduct"/> <flushOnExecute statement="updateProduct"/> <flushOnExecute statement="deleteProduct"/> <property name="size" value="1000" /> </cacheModel>
위와 같이 캐시 모델을 설정하면, 결과값을 캐시 적용하기 위해 statement에 chcheModel로 지정하도록 한다.
<statement id="getProductList" parameterClass="int" cacheModel="product-cache"> select * from PRODUCT where PRD_CAT_ID = #value# </statement>
