Основной вопрос о кешировании Hibernate - PullRequest
1 голос
/ 23 апреля 2010

Использует ли Hibernate кэш (второй уровень или иным образом), если все, что я делаю, - это пакетные вставки? Объекты не запрашиваются из базы данных, и генераторы не используются. Кроме того, StatelessSession vs Session изменит ответ? Что если я использую сеанс с размером пакета JDBC 50? Я буду использовать кеш Ehcache

1 Ответ

3 голосов
/ 23 апреля 2010

Do Hibernate использует кеш (второй уровень или иным образом), если все, что я делаю, это пакетные вставки?

Вновь вставленные экземпляры сущностей кэшируются в кеше L1 (кэш уровня сеанса) перед их сбросом в базу данных (см. Раздел 13. Пакетная обработка ). необходимость flush и clear вашего сеанса регулярно, чтобы предотвратить OOM.

Кроме того, StatelessSession vs Session изменит ответ?

Да. Как написано в разделе 13.3. Интерфейс StatelessSession : A StatelessSession не имеет ассоциированного с ним контекста персистентности и не предоставляет многие семантики жизненного цикла более высокого уровня. В частности, сеанс без сохранения состояния не реализует кэш первого уровня и не взаимодействует с каким-либо кэшем второго уровня или запроса .

Что, если я использовал сеанс с размером пакета JDBC 50?

Это просто означает, что вы должны flush / clear сеанс каждые 50 вставок.

...