2017-01-04 9 views
1

У меня есть запрос обновления jdbc, который обновляет таблицу. Кэш объектов поддерживается для одной и той же таблицы в спящем режиме. Мне нужно сообщить hibernate, чтобы обновить область кэша для этого объекта, который обновляется с помощью запроса jdbc.Каково влияние запроса jdbc на кеш второго уровня в спящем режиме? Могу ли я активировать обновление кеша для определенного региона кэша

+0

Это поможет вам [Как спящий режим обеспечивает обновление кеша второго уровня с последними данными в базе данных] (http://stackoverflow.com/questions/30413321/how-hibernate-ensures-second-level-cache-is-updated -с-последний-данные в базе данных,) – Tomz

ответ

2

Вы ищете

sessionFactory.getCache().evictEntityRegion(MyEntity.class) 

Это удаляет устаревшие записи из кэша. Однако, если вы сделаете это до обновления JDBC, в окне между этим недействительным и обновлением JDBC, кеш можно снова заполнить с помощью одновременных чтений, поэтому, если ваше приложение не остановит все обращения к БД, вы можете получить некоторые устаревшие записи ,

Другое выселение региона после обновления могло бы разобраться в нем, но между запросом JDBC и выселением региона вы снова подвержены несогласованным данным в кэше.