Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

connection.SetAutoCommit(false) ?

Olá,

Toda vez que quisermos fazer uso do begin transaction- rollback, devemos setar o auto commit para false ? ou isso varia para cada JDBC ?

Estava lendo que em alguns casos, ao utilizar transaction-rollback o SetAutoCommit (do MySQL se não me engano) é setado para false automaticamente.

1 resposta
solução!

Olá Andrew,

A resposta é: idealmente, sim. Justamente por seguir a especificação JDBC. Abaixo explico melhor:

A especificação JDBC diz que, quando uma conexão é criada, ela está com o auto-commit ativado e que o método para desabilitar o auto-commit é o setAutoCommit(), conforme a documentação aqui. Então, toda implementação da JDBC deve seguir esse padrão, como é o caso do MySQL. Aqui dá pra ver a implementação do MySQL para a JDBC e o único método que encontrei para mudar o status do auto-commit foi o setAutoCommit().

De fato, pela linguagem SQL usada pelo MySQL, dá pra usar o comando START TRANSACTION, que desabilita o auto-commit temporariamente (até chamar o COMMIT). Mas isso se dá por um comando específico da linguagem do MySQL, que não necessariamente está presente em outros bancos por não fazer parte da especificação JDBC.

Então você pode sim aproveitar algum comando específico do seu banco de dados. No entanto, se você precisar trocar de banco, não conseguirá tirar proveito do padrão que todos os drivers seguem ao implementar o JDBC e, eventualmente, algum código pode parar de compilar por usar um método específico do driver do banco anterior.

Se não estiver claro, pode perguntar!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software