2016-05-12 1 views
0

Я новичок в Ehcache.ehcache - постоянное кэширование

Я пытаюсь выполнить кеш-результат запроса SQL через mybatis xml, а ehcache кэширует запрос с его результатом, но он очищает кешированные данные после завершения операции, даже тот же экземпляр JVM запущен.

Может ли кто-нибудь посоветовать хранить кеш на диске/памяти до истечения срока действия JVM?

Фрагмент кода из mybatis-mapper.xml

<cache type="org.mybatis.caches.ehcache.EhcacheCache"> 
    <property name="eternal" value="false" /> 
    <property name="maxElementsInMemory" value="100000" /> 
    <property name="timeToIdleSeconds" value="3600" /> 
    <property name="timeToLiveSeconds" value="3600" /> 
    <property name="memoryStoreEvictionPolicy" value="LFU" /> 
    <property name="statistics" value="true" /> 
</cache> 

.....

ответ

0

Что вы ищете Ehcache Persistence

+0

понимания живучести Ehcache. Можно ли использовать внутри mybatis mapper xml вместо создания отдельного конфигурационного файла ehcache. «<типа кэша = "org.mybatis.caches.ehcache.EhcacheCache"> \t \t <имя свойства = "вечно" значение = "истинное"/> \t \t <Свойство Имя = значение "maxElementsInMemory"=" 100000 "/> \t имя \t <свойство =" "значение = "memoryStoreEvictionPolicy LRU"/> \t имя \t <свойство = "" значение = "flushInterval 60000"/> \t \t <свойство имя = "статистика" значение =" true "/> \t \t <стратегия настойчивости =" нет "/> -> не работает \t ' – sstest

0

Не специалист MyBatis - мост Ehcache. Но из вашего образца конфигурации, если вы не хотите, истечения, не следующие изменения:

  • eternal свойства быть установлено в true
  • Удалить два timeToXXX свойства

Это будет убедиться, что истечение никогда срабатывает. Обратите внимание, что кеш-память все еще может вытеснять для управления потреблением ресурсов.

+0

Пробовал вечный «истинный» без TTL, настроек TTI. Но все тот же. Только что отладка ehcache и заметил, что метод clear() в TransactionalCache вызывается по умолчанию после завершения фиксации и из-за того, что этот кеш очищается. Есть ли какие-либо свойства, чтобы пропустить этот метод clear()? Исправьте меня, если понимание неверно. '@Override public void clear() { Сброс(); clearOnCommit = true; } – sstest

0

Для того, чтобы устранить эту проблему, необходимо явно указать ниже атрибуты в вашем mapper.xml 1) useCache = «истина» и FlushCache = «ложь» для выбора операции 2) FlushCache = «ложных» для все вашей вставки/обновления/удаления операции

Sample фрагментов кода: -

<select id="getTestData" parameterType="map" resultMap="testDtls" useCache="true" flushCache="false" > 

<insert id="insertTestData" parameterType="map" flushCache="false" > 

 Смежные вопросы

  • Нет связанных вопросов^_^