4
respostas

Qual a diferença entre o commit e flush ?

Qual a diferença entre o commit e flush ?

4 respostas

Oi Carlos,

O flush sincroniza as alteracoes com o banco de dados, porem nao realiza o commit, ou seja, voce poderia continuar realizando outras operacoes com o EntityManager apos chamar o flush.

Ja o commit sincroniza as alteracoes com o banco de dados e "encerra" as operacoes da transacao atual do EntityManager.

Bons estudos!

Então nesse caso, essas informações estariam disponiveis para outros usuários:

Exemplo alguem esta buscando as vendas do periodo 01/08/2021 a 27/08/2021 ao mesmo tempo que uma nova venda esta sendo registrada e um flush sem commit foi realizado. Essa nova venda estaria sendo incluida no relatório ?

1: se sim: o que aconteceria se no final do registro de venda que talvez incluisse varias ações fosse disparada um exception impedindo o commit ? 2: se não: que vantagem isso tras ?

Oi Carlos,

Na verdade nao, pois cada entitymanager trabalha em uma "sessao" separada, ou seja, por mais que voce tenha dado um flush e sincronizado os dados no banco de dados, eles sao visiveis apenas para essa sessao vinculada com o banco de dados e se outros usuarios realizarem selects no banco eles nao verao as novas informacoes ate que o commit de fato seja realizado.

Esse isolamento serve para evitar problemas de concorrencia e consistencia das informacoes.

sincronizado os dados no banco de dados ? os bancos de dados então tem uma area especial como se fosse uma area temporária ?