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!