Eu recomendo o setAutoCommit(false) para permitir rollback’s, pois, por exemplo, se você tiver mais de um statement e estes estiverem em uma mesma transação, você garante a integridade…
Gosto de algo do tipo:
try{// Código da conexãoconn.setAutoCommit(false);// Statements, queries e afins}catch(Exceptione){conn.rollback();}finally{conn.commit();}
Confesso que faz muito tempo que não mexo com JDBC, por isto não sei se as sintaxes estão corretas, mas é por aí… 8)
R
Rodrigo_Carvalho_Aul
Só complementando, se você setar o autocommit pra true, vai ser dado commit a cada statement que você executar sem dar chance de dar rollback. Em poucos casos essa é a melhor opção…
De uma estudada em transações.
[]'s
Rodrigo Auler
R
Rage
Ok kras!!!
Já ajudaram bastante!!!
Vlw!!!
8)
R
raci0nal
Nesse seu exemplo não vejo diferença.
Transações são interessantes quando estão dentro de um contexto, ou seja, é possível/necessário gravar tudo, ou desfazer tudo!
Neste seu update, se houvesse erro ele não seria gravado, tanto com o AutoCommit (true) quanto com o “.commit()” na mão.
Agora, se houvessem dois comandos, e um deles gerasse erro, o AutoCommit (true) deixaria um persistido no banco, o que pode ferir a integridade dos dados…
Já manipulando na mão (com commits e rollbacks) você poderia desfazer todos os comandos em caso de erro.
Eu já tive problemas de transação com JDBC e Firebird… Não é possível desacoplar a transação da conexão.
Agora parti pro Hibernate, por enquanto estou sendo feliz!