Как мне настроить Hibernate для немедленного применения всех сохранений, обновлений и удалений?

Как мне настроить Hibernate для применения всех сохранений, обновлений, и удаляет на сервер базы данных сразу после того, как сеанс выполняет каждую операцию? По умолчанию Hibernate ставит в очередь все операции сохранения, обновления и удаления и отправляет их на сервер базы данных только после операции flush () , фиксации транзакции или закрытия сеанса, в котором эти операции выполняются.

Одним из преимуществ немедленной очистки операций «записи» базы данных является то, что программа может перехватывать и обрабатывать любые исключения базы данных (например, ConstraintViolationException ) в блоке кода, в котором они возникают. При поздней или автоматической очистке эти исключения могут возникать спустя долгое время после соответствующей операции гибернации, вызвавшей операцию SQL.

Обновление:

Согласно документации API гибернации для интерфейса Сеанс , преимущество перехвата и обработки исключения базы данных до завершения сеанса может быть вообще бесполезным: «Если сеанс генерирует исключение, транзакция должна быть откатана, а сеанс отменен. Внутреннее состояние сеанса может быть несовместимым. с базой данных после возникновения исключения ».

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

8
задан Derek Mahar 15 October 2010 в 18:03
поделиться