Como verificar se um commit realmente aconteceu?[RESOLVIDO]

6 respostas
R

Caros, gostaria de saber se tem como descobrir se um commit reamente aconteceu?
Estou seguindo o exemplo da loja virtual da Caelum, com o VRaptor e gostaria de saber se
é possivel através de um if.

public void salva(Turma_sm turma_sm) {
    this.daoFactory.beginTransaction();
    this.daoFactory.getTurma_smDao().atualiza(turma_sm);
    this.daoFactory.commit();
}

Muito obrigado :slight_smile:

6 Respostas

peerless
roger2007:
Caros, gostaria de saber se tem como descobrir se um commit reamente aconteceu? Estou seguindo o exemplo da loja virtual da Caelum, com o VRaptor e gostaria de saber se é possivel através de um if.
public void salva(Turma_sm turma_sm) {
    this.daoFactory.beginTransaction();
    this.daoFactory.getTurma_smDao().atualiza(turma_sm);
    this.daoFactory.commit();
}
Muito obrigado :)

Se houve qualquer erro, ele lançaria uma exceção, certo? Então, se não lançar exceção o commit rolou. -em tese-, agora se tu quer utilizar em testes de integração, faz o seguinte:

int qtdRegistrosAntes = dao.listAll().size();
dao.salvar();
int qtdRegistrosAgora = dao.listAll().size();

if (qtdRegistrosAgora > qtdRegistrosAntes) .. ok ele salvou.
Lavieri

é hibernate ?? c for

Transaction.wasCommitted()
Transaction.wasRolledBack()

http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Transaction.html

c vc so tiver acesso a session, pode recuperar a tranzação a partir de

Session.getTransaction()

http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Session.html

phpinheiro

Eu optaria pelo bom e velho try…catch.

Se vc nao quiser fazer outra leitura na base pra conferir, pode usar o sqlException mesmo, no caso de algum erro.

Agora se vc mandou executar um sql válido, mas com comando diferente do que ele deve fazer, nao vai acontecer Exception de sql.

Exemplo? update sem where…

M

Só para alertar… a solução de listar na base não funcionaria…

Imagine que voce fez um update em um registro??

A quantidade de registros continua a mesma…

Imagine que voce inseriu um registro e alguem (outra transação) removeu o registro (no caso de uma aplicação multithread…) ?

Logo a solução ficaria realmente no

try { 
   connection.commit(); 
} catch (SQLException e) {
   // ocorreu erro 
}

Abraços.

Lavieri

mezini:
Só para alertar… a solução de listar na base não funcionaria…

Imagine que voce fez um update em um registro??

A quantidade de registros continua a mesma…

Imagine que voce inseriu um registro e alguem (outra transação) removeu o registro (no caso de uma aplicação multithread…) ?


agora imagine que vc usa hibernate… e imagine que é so conferir em wasCommited() ^^… easy mode \o/

R

O Try e Cath
resolveu o problema.
Muito obrigado a todos.

Criado 9 de janeiro de 2009
Ultima resposta 17 de jan. de 2009
Respostas 6
Participantes 5