Будьте в спящем режиме поведение сброса Сессии [и Spring @Transactional]

Я использую Spring и В спящем режиме в веб-приложении,

SessionFactory введен в боб ДАО, и затем этот ДАО используется в Сервлете через webservicecontext.

Методы ДАО являются транзакционными в одном из методов, которые я использую... getCurrentSession () .save (myObject);

Один сервлет называет этот метод с объектом переданным.

Обновление, кажется, не сбрасывается сразу, требуется приблизительно 5 секунд для наблюдения изменений в базе данных. Метод сервлета, в котором называют метод обновления того ДАО, берет часть вторых для завершения.

После того, как @Transactional метод ДАО завершается, сбрасывания НЕ может произойти? Это, кажется, не правило [я уже вижу его].

Затем вопрос - это: что сделать, чтобы вынудить сессию сбросить после каждого метода ДАО? Это не может быть хорошая вещь сделать, но говорящий об Уровне служб, некоторые методы должны закончиться непосредственным сбросом и Быть в спящем режиме, поведение Сессии не предсказуемо.

Таким образом, что сделать, чтобы гарантировать, что мой @Transactional метод сохраняет все изменения после последней строки того кода метода?

 getCurrentSession().flush() is the only solution?

p.s. Я считал где-нибудь, что @Transactional СВЯЗАН с Транзакцией DB. Возвраты метода, транзакция должна фиксироваться. Я не вижу, что это происходит.

16
задан EugeneP 20 May 2010 в 18:41
поделиться

1 ответ

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

Похоже, что происходит что-то странное, и вам следует провести небольшое расследование.

Исследуйте ваши журналы, в частности, я бы установил уровень регистрации в DEBUG для вашего менеджера транзакций, чтобы увидеть, что именно делает менеджер транзакций.

Кроме того, включите ведение журнала для hibernate (установите show_sql в true): это выведет данные в System.out, когда происходит промывка, и это может дать вам некоторые подсказки.

Сообщите, если найдете что-нибудь интересное.

5
ответ дан 30 November 2019 в 23:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: