ae povo,
procurei mas nao achei nada de como é feito controle de transação no java.
tipo… se eu tenho 3 querys e caso uma falhe como eu faço pra dar o roll back nas outras?
ou entao o commit em caso de sucesso?
vlw,
ae povo,
procurei mas nao achei nada de como é feito controle de transação no java.
tipo… se eu tenho 3 querys e caso uma falhe como eu faço pra dar o roll back nas outras?
ou entao o commit em caso de sucesso?
vlw,
Connection conn = MinhaConexao.getConnection();
conn.setAutoCommit(false);
int success = ps.executeUpdate();
if(success == 1){
conn.commit();
conn.close();
}
else{
conn.rollback();
conn.close();
}
ahh! sakei!
entao por exemplo, se eu tiver 3 querys eu faço assim:
int sucess = 0;
success += ps.executeUpdate();
.
. (preparando segunda query)
.
sucess += ps.executeUpdate();
.
. (preparando terceira query)
.
sucess += ps.executeUpdate();
if(success == 3){
conn.commit();
conn.close();
}
else{
conn.rollback();
conn.close();
}
é assim mesmo que “os bons” fazem?
Alguns detalhes.
Em query nao precisa dar commit ela é “read only”.
Uma outra coisa, tu precisa definir o escopo da transacao, como vai tratar ela, por requisicao, por comando, etc.
Claro que no fim das contas tudo se resume a commit e rollback, mas é importante definir onde isso vai ser feito.
Alem disse dependendo do que tu for fazer podes usar algum framework que gerencie tuas transacoes.
]['s
oow amigo,
como faço isso?
tipo quais?
vlw
É recomendável também você fazer uso de contruções do tipo: try {
...
...
conn.commit();
} catch(Exception e) {
conn.rollback();
... //mostra exceção, loga, lança denovo, faz o diabo a 4, etc.!!
}
pra garantir que o rollback seja dado, caso algo não previsto aconteça.