Я использую Spring и Hibernate в веб-приложении,
SessionFactory вводится в DAO bean, а затем этот DAO используется в сервлете через webservicecontext.
Методы DAO являются транзакционными, внутри одного из методов, которые я использую... getCurrentSession(). save (myObject);
Один сервлет вызывает этот метод с переданным объектом.
Обновление, похоже, не очищается сразу, для просмотра изменений в базе данных требуется около 5 секунд. Метод сервлета, в котором вызывается этот метод обновления DAO, занимает до половины секунды.
После завершения метода @Transactional DAO промывка может не произойти? Это, похоже, не правило [я уже вижу это].
Тогда возникает вопрос: что делать, чтобы заставить сеанс стираться после каждого метода DAO? Это может быть не очень хорошо, но, говоря о слое службы, некоторые методы должны заканчиваться немедленным сбросом, а поведение сеанса Hibernate не предсказуемо.
Итак, что делать, чтобы гарантировать, что мой метод @Transactional сохраняет все изменения после последней строки этого кода метода?
getCurrentSession().flush() is the only solution?
p.s. Я где-то читал, что @Transactional IS ASSOCIATED с транзакцией DB. Возврат метода, транзакция должна быть выполнена. Я этого не вижу.