Как изменить кэш запросов entity Manager?

#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");