Qual a diferença entre o commit e flush ?
Qual a diferença entre o commit e flush ?
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 ?