Я использую iBatis для взаимодействия с базой данных. В последнее время я пытаюсь улучшить производительность некоторых статических выборок данных путем настройки кэширования. Chache был настроен и работал должным образом, однако проблема заключается в сбросе данных кэша всякий раз, когда происходит какая-либо вставка / обновление / удаление этих данных. Я сделал следующую конфигурацию для таблицы категорий,
<cacheModel type="LRU" id="categoryCache" readOnly="true" serialize="false">
<flushOnExecute statement="insertCategory"/>
<flushOnExecute statement="updateCategory"/>
<flushOnExecute statement="deleteCategory"/>
<property name="size" value="1000"/>
</cacheModel>
<insert id="insertCategory"
parameterClass="com.uniplas.entity.master.beans.CategoryVO">
insert into categories (code, description)
values(#code:VARCHAR#,#description:VARCHAR#)
</insert>
<update id="updateCategory"
parameterClass="com.uniplas.entity.master.beans.CategoryVO">
update categories set description=#description:VARCHAR# where code=#code:VARCHAR#
</update>
<delete id="deleteCategory"
parameterClass="com.uniplas.entity.master.beans.CategoryVO">
delete from categories where code=#code:VARCHAR#
</delete>
<select id="selectCategory" resultMap="categoryResult"
parameterClass="java.util.Map" cacheModel="categoryCache">
select * from categories where 1=1
<dynamic>
<isNotEmpty property="categoryVO.code">
and code like #categoryVO.code:VARCHAR#
</isNotEmpty>
<isNotEmpty property="categoryVO.description">
and description like
#categoryVO.description:VARCHAR#
</isNotEmpty>
<isNotEmpty property="orderBy">
order by $orderBy$
</isNotEmpty>
</dynamic>
</select>
Теперь проблема в том, что даже если выполняется любой из операторов insertCategory / updateCategory / deleteCategory, кэш не очищается. Он сохраняет данные, которые были выбраны до вставки / обновления / удаления!
Пожалуйста, дайте мне знать, где я иду не так.