Problemas com hibernate ao salvar em duas tabelas distintas

4 respostas
donatinho

E aí moçada, beleza?

É o seguinte, estou com um problema e não consegui achar uma solução na net…

Tenho uma classe DAO que usa hibernate. Eu insiro o registro em duas tabelas distintas, mas se der erro em uma das tabelas o que foi salvo deve ser desfeito.

Alguém sabe como fazer isso no DAO com hibernate dentro do JBoss?

see ya

donatinho

4 Respostas

EduFrazao

São duas entidades mapeadas em tabelas diferentes que precisam estar na mesma transação?

L

Tenho quase certeza que a maioria dos bancos relacionais são baseados no padrão ACID (Atomicity, Consistency, Isolation, Durability), esse primeiro elemento (Atomicity) permite fazer inserções atômicas, ou seja, só acontecerá a inserção se não ocorrer nenhum erro, se acontecer um erro o banco faz um rollback das alterações.

drsmachado

donatinho:
E aí moçada, beleza?

É o seguinte, estou com um problema e não consegui achar uma solução na net…

Tenho uma classe DAO que usa hibernate. Eu insero o registro em duas tabelas distintas, mas se der erro em uma das tabelas o que foi salvo deve ser desfeito.

Alguém sabe como fazer isso no DAO com hibernate dentro do JBoss?

see ya

donatinho


Mesmo o MySQL que, por padrão, é auto commit, é gerenciado pelo Hibernate sem o auto commit.
Ou seja, quando você insere registros dependentes e, em alguma etapa da transação ocorre erro, todas as ações executadas são removidas via rollback.
Não entendi a tua dúvida.
P.S.: Não posso deixar de comentar. Insero não existe. A conjugação correta, para dar sentido ao que você quis dizer seria insiro.

donatinho

Pessoal, consegui achar solução para o problema.

Coloquei o meu sistema no container do JBoss e passei a usar EJB. Com isso, consegui “controlar” a transacao sem precisar alterar o meu mapeamento de hibernate ou configuracao dele.

Bastando colocar required para o ejb Local que se der erro na transacao e ja tiver inserido em uma tabela, o contexto do jboss / ejb permite o rollback.

Obrigado pela ajuda.

see ya

donatinho

Criado 23 de maio de 2013
Ultima resposta 23 de mai. de 2013
Respostas 4
Participantes 4