Я много гугл и много читал о и org.hibernate.Session.flush()
, знаю цель каждого метода, но все еще есть вопрос.HIbernate commit() и flush()
Полезно ли позвонить по телефону org.hibernate.Session.flush()
? Как сказано в org.hibernate.Session
документы,
должен быть вызван в конце единицы работы, перед тем совершали сделки и закрытия сессии (в зависимости от флеш-режиме, Transaction.commit() вызывает этот метод).
Не могли бы вы объяснить мне цель вызова org.hibernate.Session.flush()
вручную, если org.hibernate.Transaction.commit()
будем называть его автоматически?
Спасибо!
Вы можете ввести 'sessionFactory', используя аннотацию' @ Transactional', если вы заглянули в нее. Вам не понадобится, чтобы ваш код был транзакционным везде и далее (в некоторых случаях он требует). – Lion
Я просто столкнулся с интересной ситуацией в своем коде, мне пришлось объединить сущность, у которой уже был идентификатор, созданный из клиентского приложения, а затем обновить один и тот же объект, чтобы получить поля сгенерированные с помощью базы данных, такие как дата и изменение даты. Без вызова session.flush() он выкидывал исключение, не найденное объектом, потому что вызов слияния иногда игнорируется до конца транзакции, когда я добавлял флеш сразу после вызова слияния, он заставляет hibernate выполнять фактический запрос, а затем позже обновлять объект работает, потому что теперь он существует в db! –