session.flush()
выполнит процесс очистки, который будет выполнять грязную проверку всех постоянных объектов, управляемых сеансом гибернации. Если объект считается грязным (т. Е. Любые значения объекта, хранящиеся в этом сеансе гибернации, отличаются от соответствующая запись в базе данных), hibernate немедленно выдаст SQL-запросы ОБНОВЛЕНИЯ в БД, чтобы синхронизировать эти различия, чтобы объект, сохраненный в сеансе гибернации, имел те же значения с соответствующей записью базы данных.
Тем не менее, просто выдача SQL UPDATE не означает, что измененные данные фактически сохраняются в БД, вы должны совершить транзакцию, чтобы подтвердить фактическое сохранение измененных данных в БД. Это также означает, что вы можете выполнить ROLLBACK изменения, внесенные UPDATE SQL, если обнаружены какие-либо ошибки после выдачи UPDATE SQL, но до совершения транзакции.
Режим очистки сеанса гибернации определяется параметрами FlushMode
, которые можно настроить с помощью session.setFlushMode () . Значение по умолчанию FlushMode.AUTO
, так что session.flush()
будет происходить автоматически до совершения транзакции и выполнения запроса.
Таким образом, когда session.getTransaction.commit()
вызывается по умолчанию FlushMode
, session.flush()
будет выполняться неявно перед выполнением session.getTransaction.commit()
.