Ola, estou criando um cache para otimizar as consultas mais pesadas aqui no sistema, implementando o algorotimo LRU, quais as outras opções de cache e quando é realmente é necessário usar esse tipo de tecnica:
Estou usando assim:
<cacheModel id="user-cache" type="LRU" readOnly="true" serialize="false">
<flushInterval hours="24"/>
<flushOnExecute statement="insertUser"/>
<flushOnExecute statement="deleteUser"/>
<flushOnExecute statement="updateUser"/>
<property name="cache-size" value="500"/>
</cacheModel>
<select id="getAllUsers" resultMap="result" parameterClass="map" cacheModel="user-cache">
select
wu.webusr_cod ,
wu.webusr_lgn ,
wu.webusr_nom ,
wu.webusr_sit ,
wu.webusr_adm ,
wu.webusr_email
from DB2INST2.WEBUSR wu
join DB2INST2.WEBUSRPWD wup on (wu.WEBUSR_COD = wup.WEBUSR_COD)
<isNotEmpty property="webpfl_cod">
join DB2INST2.WEBUSRPFL wupfl on (wu.webusr_cod = wupfl.webusr_cod)
where
wupfl.webpfl_cod = 4
and wu.webusr_sit > 0
<isNotEmpty property="webusr_cod">
and wu.webusr_cod = #webusr_cod#
</isNotEmpty>
</isNotEmpty>
ORDER BY wu.webusr_nom
</select>