Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Flush não atualiza o banco!

Só como forma de informação, assim como foi mostrado na aula de ciclo de vida da entidade, o flush foi utilizado como alternativa ao commit mantendo a entidade ainda no modo managed.

Porém o flush não atualiza o banco, ele só envia o comando SQL ao banco de dados em uma transação ainda aberta. Logo o banco só vai escrever os dados se a transação emitir o commit.

Mesmo o log do hibernate imprimindo o comando, ele ainda não foi executado. Já que uma transação só é realizada quando completa pelo commit.

1 resposta
solução!

Olá Adrian

Obrigado por compartilhar essa informação conosco. É verdade, o método flush() do Hibernate é responsável por sincronizar as alterações feitas nas entidades com o banco de dados, enviando os comandos SQL para o banco. No entanto, como você mencionou, essas alterações só serão efetivamente gravadas no banco quando a transação for confirmada através do commit().

O flush() é útil em alguns casos, como quando você precisa garantir que as alterações sejam refletidas imediatamente no banco de dados, mesmo que a transação ainda não tenha sido concluída. Por exemplo, se você precisa verificar se uma consulta retorna os resultados esperados após uma atualização, pode usar o flush() antes da consulta para garantir que os dados estejam atualizados.

No entanto, é importante ter em mente que o flush() não substitui o commit(). Apenas o commit() garante que todas as alterações sejam confirmadas e gravadas permanentemente no banco de dados.

Espero ter ajudado a esclarecer essa questão! Se tiver mais alguma dúvida, é só perguntar.

Espero ter ajudado e bons estudos!