Confirmar fará o commit do banco de dados. As alterações no objeto persistente serão gravadas no banco de dados.Flushing é o processo de sincronização o armazenamento persistente subjacente com estado persistente mantido em memory.ie. ele será atualizado ou inserido em suas tabelas na transação em execução, mas pode não cometa essas alterações (isso depende do seu modo de liberação).
Quando você tem um objeto persistente e altera um valor nele, ele fica sujo e a hibernação precisa liberar essas alterações para sua camada de persistência. Ele pode fazer isso automaticamente para você ou você pode precisar fazer isso manualmente, isso depende do seu modo de descarga (automático ou manual) :)
Resumindo:transaction.commit() libera a sessão, mas também encerra a unidade de trabalho.
Há uma referência semelhante ao seu problema aqui