mybatis

cacheModel을 이용한 간단 캐시 사용

초이짬 2017. 11. 20. 11:56
728x90

지정된 시간만큼 특정 결과를 캐시에 저장되서 사용하고자 할때 사용가능 하다
물론 해당 쿼리를 소스를 통해서도 호출이 가능 하기에 여러 용도로 사용된다.
일반적으로 기준정보데이터들에 대해서 많이 걸어두기도 한다.

과거에 몇번 사용했는데 그때 기록을 못해서
http://wiki.gurubee.net/pages/viewpage.action?pageId=26741427
해당
부분을 참조했다.

<cacheModel id="empCache" type="LRU" readOnly="true" serialize="false">
<flushInterval minutes="60"/>
<property name="cache-size" value="10" />
<flushOnExecute statement="emp.selectEmp"/>
</cacheModel>

<select id="selectEmpList" resultClass="emp" cacheModel="cachemodel.empCache" >
SELECT empno, ename, job, sal, NVL(mgr,0) mgr
FROM emp
</select>

<select id="selectEmp" resultClass="emp" parameterClass="int" >
SELECT empno, ename, job, sal, NVL(mgr,0) mgr, deptno
FROM emp
WHERE empno = #empno#
</select>

type 속성은
MEMORY:GC발생전까지 메모리 저장
FIFO:선입선출(first in first out)
LRU:최근 사용된(일반적으로이거씀)
OSCACHE:OSCache사용(사용안해봣음)
readOnly:true:캐시가 읽기 전용(여러쓰레드에서 읽을수가 있다)
serialize:직렬화여부

map-config에 설정활성화 추가

<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
useStatementNamespaces="true"
/>

설정이 정상이면 콘솔창에 해당 쿼리를 질의 할때 cache로그가 나온다
최초 기동시에도 기억으로는 쿼리를 읽어서 데이터를 cache에 담았던걸로 기억한다.

728x90