Изменение режима Hibernate Session.FlushMode во время сеанса
Мое приложение использует FlushMode.AUTO
, Для конкретного вызова метода службы я хочу изменить Hibernate Session.FlushMode
в FlushMode.COMMIT
и вернуться к FlushMode.AUTO
когда метод завершится.
Вопрос:- Есть ли проблемы / опасности изменения FlushMode во время сеанса?
Причина изменения FlushMode во время сеанса:- Я использую Hibernate Interceptor Approach (onFlushDirty
) для аудита изменений. При использовании FlushMode.AUTO происходит несколько сессий сбоев (поведение FlushMode.AUTO
) Следовательно, onFlushDirty
вызывается несколько раз, что приводит к дублированию аудита. Я обойти выше проблемы, изменив FlushMode
в COMMIT
в методе, где я ожидаю, что одитинг произойдет.
1 ответ
Самая распространенная причина запуска автоматического сброса - это когда вы выполняете запрос во время выполнения. Если Hibernate обнаруживает, что некоторые из ваших не очищенных изменений в сеансе могут повлиять на результат вашего запроса, то он автоматически вызывает сброс. Поэтому, когда ваш запрос выполняется, он получает данные, которые соответствуют изменениям, которые вы внесли в сеанс.
Таким образом, это зависит от того, что делает ваш код. Если это поведение не влияет на функциональность, то все должно быть в порядке.