A API do JDBC 3.0 adiciona o método Connection.setSavepoint,
que define um ponto de salvamento na transação corrente.
O método Connection.rollback foi sobrecarregado para receber o argumento
ponto de salvamento.
Para obter mais informações deve ser consultado
.
O código do exemplo abaixo insere uma linha na tabela, define o ponto de
salvamento svpt1, e insere uma segunda linha.
Quando mais tarde a transação é desfeita até svpt1,
a segunda inserção é desfeita, mas a primeira inserção permanece intacta.
Em outras palavras, quando a transação é efetivada somente a linha contendo '1'
é adicionada à TABELA1.
// A auto-efetivação deve estar desativada
// para utilizar pontos de salvamento.
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
int rows = stmt.executeUpdate("INSERT INTO TABELA1 (COL1) VALUES(1)");
// definir o ponto de salvamento
Savepoint svpt1 = conn.setSavepoint("S1");
rows = stmt.executeUpdate("INSERT INTO TABELA1 (COL1) VALUES (2)");
...
conn.rollback(svpt1);
...
conn.commit();