Зачем? - Кэш второго уровня должен быть установлен в false для пакетных обновлений, это правда
В документации по Hibernate говорится, что для пакетных обновлений для кэша второго уровня должно быть установлено значение false, так ли это, если да, то почему? оба верны, есть какая-то проблема? org.hibernate.cache.ehcache.EhCacheRegionFactory true 50
1 ответ
Кэш второго уровня хранит ссылку на все объекты, которые используются в текущей транзакции. Пакетные обновления в основном используются для обновления многих объектов (> 10'000). Многим объектам требуется много памяти, но для небольшого выигрыша: вам, скорее всего, не понадобится ни один из них снова, скорее (или, скорее, если вы обновите миллион объектов, вы на самом деле не знаете, какой из них вам понадобится) следующий).
Таким образом, помещение всех этих объектов в кэш второго уровня создает две проблемы: 1. Это тратит впустую память и 2. Она может выделять столько памяти, что вам не хватает этого.
Чтобы отключить кэш для текущего сеанса, используйте session.setCacheMode(CacheMode.IGNORE)
, Источник: https://forum.hibernate.org/viewtopic.php?f=1&t=964775