Разница между save и saveAndFlush в Spring данных jpa
Я пытаюсь изучить данные JPA с помощью w760, проверив некоторую операцию CRUD через JpaRepository
.
Я наткнулся на два метода save
и saveAndFlush
.
Я не понимаю разницу между этими двумя. При вызове save
мои изменения также сохраняются в базе данных, так что использование saveAndFlush
.
Ответы
Ответ 1
В saveAndFlush
изменения будут немедленно saveAndFlush
данных DB. С save
это необязательно верно и может оставаться в памяти только до тех пор, пока не будут выпущены команды flush
или commit
.
Но имейте в виду, что даже если вы сбрасываете изменения в транзакции и не совершаете их, изменения все равно не будут видны внешним транзакциям до фиксации в этой транзакции.
В вашем случае вы, вероятно, используете какой-то механизм транзакций, который выдает команду commit
для вас, если все будет хорошо.
Ответ 2
В зависимости от режима спящего режима, который вы используете (AUTO
по умолчанию), save
может или не может сразу записать ваши изменения в БД. Когда вы вызываете saveAndFlush
вы выполняете синхронизацию состояния модели с БД.
Если вы используете режим автосохранения AUTO, и вы используете свое приложение для первого сохранения, а затем снова выберите данные, вы не увидите разницы в bahvior между save()
и saveAndFlush()
потому что выбор сначала запускает флеш. См. Документацию.