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

O resultado foi o mesmo sem rollback

Olá, não inseri o connection.rollback() e o resultado foi o mesmo: os produtos não foram incluídos no banco. Por quê?

public class TesteInsercao {
    public static void main(String[] args) throws SQLException {
        try(Connection connection = Database.getConnection()){
            connection.setAutoCommit(false);
            String sql = "insert into Produto (nome, descricao) values (?, ?)";
            try(PreparedStatement statement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)){
                adiciona("Notebook'i5", "Notebook de ultima geracao", statement);
                adiciona("TV LCD", "32 polegadas", statement);
                adiciona("Blueray","Full HDMI", statement);
                connection.commit();
            } catch (Exception ex){
                ex.printStackTrace();
        // connection.rollback();
                System.out.println("Rollback efetuado");
            }
        }
    }
1 resposta
solução!

Depois que a conexão é fechada, a transação com falha é revertida e os bloqueios associados são liberados automaticamente, porém, é uma boa prática realizar o rollback explicitamente no seu código.

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