Я пишу пакетное задание, которое записывает большой объем записей в две таблицы. В классе уровня данных я использую 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Я выделяю ресурсы для большого объема памяти, так как общее время выполнения является наиболее важным фактором