Spring Data JPA saveAll (), Hibernate L2 Cache и принудительные обновления - PullRequest
0 голосов
/ 24 октября 2019

Я пишу пакетное задание, которое записывает большой объем записей в две таблицы. В классе уровня данных я использую Spring Data CrudRepository.saveAll(Iterable<T>) для сохранения сущностей в БД в конце работы. Я также использую кэш-память второго уровня Hibernate, чтобы сократить время выполнения запросов только для чтения.

У меня такой вопрос - есть ли способ принудительной очистки Spring / Hibernate кешем после записи? Будет ли изменение стратегии параллелизма кэша на read_only гарантировать, что новые / обновленные объекты будут автоматически очищаться?

Используемый для этого стек технологий:

  • Java 8
  • Spring Boot 2.1
  • Hibernate 5.3
  • Ehcache 2 (я знаю, что он устарел)
  • Informix DB

Некоторые замечания по реализации:

  • Кэш Hibernate L2 включен,с Ehcache в качестве поставщика
  • Уровень параллелизма кеша READ_WRITE для всех сущностей
  • Кеш Ehcache по умолчанию настроен на постоянное хранение записей (eternal = true)
  • IЯ выделяю ресурсы для большого объема памяти, так как общее время выполнения является наиболее важным фактором
...