Como trabalhar com transações?

Amigos, preciso salvar duas tabelas com um único comando, no entanto não sei como iniciar uma transação e depois fazer um “commit”. Aliás, isto é possível em java? Estou utilizando o eclipse + firebird. Alguém poderia me passar um exemplo?
Obrigado.

procure por JTA - Java Transaction API

Pequeno exemplo:

conn.setAutoCommit(false); //BEGIN
Statement srmt = conn.createStatement();
        try {
              stmt.executeUpdate("Update");
              stmt.execute("Insert");
              conn.commit(); //COMMIT
         }
         catch(SQLException e) {
                  conn.rollback();   //ROLLBACK
         }
         finally { 
                  conn.close();
         }

Qualquer coisa é soh avisar.

Mais alguma informação galera???

Cara,

Por padrão, ao chamar o método executeUpdate() você está fazendo a persistência no banco. Mas e se antes de chamar o método pra inserir na segunda tabela, sua conexão cair?

Você precisa que essas duas operações sejam atômicas, e que se uma delas falhar, nenhuma das duas funcione.

Você pode fazer isso com JDBC ou com JTA. Pra usar JTA você vai sofrer um pouco, pois vai precisar de um Servidor de Aplicação que implemente isso pra você, este é o único jeito, salvo engano.

Com JDBC você vai aprender uma coisinha a mais agora:

  • Você precisa “desligar” o autocommit.
  • Realizar suas operações no banco.
  • Chamar o método commit
  • “Ligar” o autocommit.
  • Em caso de falha, o método rollback tem que ser chamado.

Autocommit é exatamente o que te falei acima: - Por padrão é setado como true, e realiza as inserções à cada chamada executeUpdate().
Ao setá-lo como false, as operações só serão realmente persistidas com a chamada do commit.

O código do colega cado está exemplificando este blábláblá que te falei.

Referência completa de como controlar a transação usando o objeto do tipo Connection
http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Connection.html