2012-01-20 3 views
14

Эта конфигурация Hibernate якобы должна контролировать, сколько объектов кэшируется в кеше первого уровня. Причина достаточно проста для понимания, мы не хотим исчерпать память.Какой смысл указывать hibernate.jdbc.batch_size?

Но что-то меня смущает. Каждая реализация, которую я видел, включая this website , имеет явный флеш и ясность. Нет проблем, но тогда в чем смысл свойства конфигурации?

Примечание: Я предполагаю, что Hibernate каким-то образом контролирует размер кеша, и если количество объектов определенного типа будет больше размера кэша, то синхронизируйте кеш с db. Не знаю, неправильно ли это предположение ???

ответ

21

Этот параметр конфигурации не имеет ничего общего с размером кеша первого уровня. И очистка сеанса ничего не удаляет из кеша. Он записывает ожидающие изменения (вставки, удаления, обновления) в базу данных. Кэш очищается только тогда, когда clear() явно вызван или когда сеанс закрыт. Если вы не очистите сеанс (или не определите конкретные объекты), кеш будет продолжать расти и расти. Это не проблема, поскольку она обычно очень короткая (длительность транзакции).

Пакетные обновления JDBC позволяют отправлять несколько запросов обновления в одну партию в базу данных. Это уменьшает количество сетевых вызовов. Вы можете просмотреть его как загрузку несжатого почтового индекса, содержащего 20 файлов, вместо отправки по 20 файлов по отдельности.

Путаница возникает из-за того, что обновления пакетов, упомянутые на странице, связанной с вашим вопросом, не имеют никакого отношения к пакетным обновлениям JDBC. Что означает Hibernate с пакетными обновлениями, это «обновления, выполняемые пакетным заданием». Пакетное задание обычно имеет гораздо более длительные транзакции, типичные для использования в бизнесе, и обновляет сотни, тысячи или даже больше объектов в одной транзакции. Вот почему Hibernate рекомендует регулярно промывать и очищать сеанс в этом случае, чтобы избежать нехватки памяти.

+0

Спасибо, что разъясняет это. Я почему-то думал, что они связаны друг с другом, но это все отдельные оптимизации. –

Смежные вопросы