Вызов flush () в методе @Transactional в приложении Spring Boot

Это потрясающе:

string.Format("{0:00}:{1:00}:{2:00}",
               (int)myTimeSpan.TotalHours,
               myTimeSpan.Minutes,
               myTimeSpan.Seconds);
0
задан Cybex 18 January 2019 в 16:28
поделиться

1 ответ

Он не должен ничего сохранять до того, как вы позвоните em.commit() или транзакция завершится. Лучшее объяснение, которое я нашел, можно найти в здесь . Ниже приведен важный отрывок:

Эта операция приведет к выполнению операторов DML (вставка / обновление / удаление и т. Д.) В базе данных, но текущая транзакция не будет совершена. Это означает, что flush () не сделает текущие изменения видимыми для других экземпляров EntityManager или других внешних клиентов базы данных; это произойдет только при фиксации транзакции. Другими словами, операция flush () будет очищать только текущий кэш памяти из EntityManager в сеанс базы данных.

Таким образом, сброс может вызвать некоторые исключения JPA, но на самом деле он не будет зафиксирован в базе данных до завершения транзакции.

0
ответ дан pirho 18 January 2019 в 16:28
поделиться
Другие вопросы по тегам:

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