#java #hibernate #jpa #caching
#java #спящий режим #jpa #кэширование
Вопрос:
очистка всего кэша запросов в моей ситуации действительно дорогостоящая, поэтому я хотел бы очистить только определенный кэш запросов.
Допустим, я выполнил следующий запрос hql:
SELECT FROM Car c WHERE c.id = 22
В следующий раз я хотел бы заставить hibernate извлекать результат из базы данных вместо того, чтобы получать то, что находится в кэше запросов.
Замечания: ни отключение кэширования запросов, ни очистка всего кэша не являются допустимыми параметрами. Я вообще не могу снизить производительность.
Ответ №1:
Отключите кэширование при запросе с помощью hibernateQuery.setCacheMode(CacheMode.REFRESH)
.
Программная недействительность:
Задайте имя региона при создании запроса hibernateQuery.setCacheRegion("car22")
, а затем сделайте его недействительным session.getSessionFactory().getCache().evictQueryRegion("car22");