Em geral, você deve usar
Connection.commit()
e não Connection.setAutoCommit(true)
para confirmar uma transação, a menos que você queira mudar do uso de transação para o modelo 'transação por instrução' do autoCommit. Dito isso, chamando
Connection.setAutoCommit(true)
enquanto em uma transação confirmará a transação (se o driver estiver em conformidade com a seção 10.1.1 da especificação JDBC 4.1). Mas você só deve fazer isso se quiser permanecer no autoCommit depois disso, pois habilitar / desabilitar o autoCommit em uma conexão pode ter uma sobrecarga maior em uma conexão do que simplesmente confirmar (por exemplo, porque precisa alternar entre gerenciadores de transações, faça verificações adicionais , etc). Você também deve usar
Connection.commit()
e não use o comando SQL nativo COMMIT
. Conforme detalhado na documentação de conexão:O problema é que comandos como
commit()
e setAutoCommit(boolean)
pode fazer mais trabalho em segundo plano, como fechar ResultSets
e fechando ou redefinindo Statements
. Usando o comando SQL COMMIT
irá ignorar isso e potencialmente colocar seu driver / conexão em um estado incorreto.