Estou tentando aprender dados de primavera JPA testando alguma operação CRUD via JpaRepository
.
Me deparei com dois métodos save
e saveAndFlush
. Eu não entendo a diferença entre esses dois. Ao chamar save
também minhas alterações estão sendo salvas no banco de dados, então, para que serve saveAndFlush
.
Dependendo do modo de liberação de hibernação que você está usando (
AUTO
é o padrão),save
pode ou não gravar suas alterações no banco de dados imediatamente. Quando você liga,saveAndFlush
está reforçando a sincronização do seu estado de modelo com o banco de dados.Se você usar o modo de descarga AUTOMÁTICO e estiver usando seu aplicativo para salvar primeiro e depois selecionar os dados novamente, não verá uma diferença de temperatura entre
save()
esaveAndFlush()
porque a seleção aciona uma descarga primeiro. Veja a documentação .fonte
save
uma entidade e novamente a mesma, você quer dizer comsave
o segundo comando não lançará uma exceção para duplicação por exemplo?save
são idempotentes. Veja este tópico para mais detalhes.