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.