Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

setAutoCommit deveria voltar a ser true

No exemplo apresentado pelo instrutor, não foi voltado a connection para o estado de autoCommit no final da transação, não seria necessário atribuir ao final setAutoCommit(true), ou devido a conexão ser fechada posteriormente a mesma voltaria ao estado de autoCommit ???

ou o mais certo seria como apresentado abaixo:

try(Connection connection = ConnectionPoolFactory.getConnection()){
            connection.setAutoCommit(false);

            String sql = "INSERT INTO Produto (Pro_Cod, Pro_Nom) VALUES (?, ?)";
            try(PreparedStatement preparedStatement = connection.prepareStatement(sql)){
                preparedStatement.setInt(1, 1454);
                preparedStatement.setString(2, "Teclado");
                preparedStatement.executeUpdate();

                connection.commit();
                connection.setAutoCommit(true);
            }catch (Exception e){
                e.printStackTrace();
                connection.rollback();
                connection.setAutoCommit(true);
            }
        }
3 respostas

Boa noite Josias, por padrão o mysql é auto commit, então teoricamente não precisaríamos voltar.

solução!

Oi Josias, tudo bem?

Como essa Connection está sendo criada dentro do método main, ela só dura o escopo da execução do método. Então nesse caso não precisa se preocupar pois em outras partes do sistema. Além disso tem o que você falou, que ele encerrará a Connection logo depois do bloco try.

Cada vez que você pedir uma Connection para o pool ele retornará uma com o valor padrão do auto-commit.

A documentação indica que por padrão a conexões estão no modo auto-commit.

Faz sentido? Abraço!

Obrigado Lucas!

Agora ficou claro, verifiquei a documentação. :)

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