Подтвердить что ты не робот

Разница между save и saveAndFlush в Spring данных jpa

Я пытаюсь изучить данные JPA с помощью w760, проверив некоторую операцию CRUD через JpaRepository.

Я наткнулся на два метода save и saveAndFlush. Я не понимаю разницу между этими двумя. При вызове save мои изменения также сохраняются в базе данных, так что использование saveAndFlush.

4b9b3361

Ответ 1

В saveAndFlush изменения будут немедленно saveAndFlush данных DB. С save это необязательно верно и может оставаться в памяти только до тех пор, пока не будут выпущены команды flush или commit.

Но имейте в виду, что даже если вы сбрасываете изменения в транзакции и не совершаете их, изменения все равно не будут видны внешним транзакциям до фиксации в этой транзакции.

В вашем случае вы, вероятно, используете какой-то механизм транзакций, который выдает команду commit для вас, если все будет хорошо.

Ответ 2

В зависимости от режима спящего режима, который вы используете (AUTO по умолчанию), save может или не может сразу записать ваши изменения в БД. Когда вы вызываете saveAndFlush вы выполняете синхронизацию состояния модели с БД.

Если вы используете режим автосохранения AUTO, и вы используете свое приложение для первого сохранения, а затем снова выберите данные, вы не увидите разницы в bahvior между save() и saveAndFlush() потому что выбор сначала запускает флеш. См. Документацию.