Spring 3 + JPA 2

5 respostas
rogeriosantos77

Srs,

Quando eu anoto um método como @Transactional o default dele não é caso ocorra uma exception no método ele executar um rollback da transação ?

Pergunto isso pq criei um método e anotei ele com @Transactional e esse método persiste dados em duas tabelas distintas, porém em certo ponto do método ele faz um processamento e dependendo do resultado ele lança uma Exception (ServiceException é o nome da Excessão que o método lança), porém qdo ele lança a exception um rollback não ocorre. Na verdade o rollback soocorre se eu incluir o atributo rollbackFor={ServiceException.class} na anotação

É isso memso ? O lançamento de exception não é default para ocorrer rollback ?

5 Respostas

Tchello

Cara, também tenho essa dúvida.
Com EJB funciona o rollback normal quando há alguma exception, mas com Spring se eu não informar o rollbackFor ele não funciona.

Será esse o comportamento esperado?
Até acredito que exista alguma configuração que se possa fazer pra não ser necessário, mas fico com a impressão que lá vem xml…

A propósito, eu conheço vc hehehe

rogeriosantos77

Balloni ? E ai blz?

Pelo jeito vamos continuar com a dúvida hein rs.

FernandoFranzini

rogeriosantos77:
Srs,

Quando eu anoto um método como @Transactional o default dele não é caso ocorra uma exception no método ele executar um rollback da transação ?

Pergunto isso pq criei um método e anotei ele com @Transactional e esse método persiste dados em duas tabelas distintas, porém em certo ponto do método ele faz um processamento e dependendo do resultado ele lança uma Exception (ServiceException é o nome da Excessão que o método lança), porém qdo ele lança a exception um rollback não ocorre. Na verdade o rollback soocorre se eu incluir o atributo rollbackFor={ServiceException.class} na anotação

É isso memso ? O lançamento de exception não é default para ocorrer rollback ?


Nâo existe default de roolback no spring…vc tem que declarar qual é a exception que fara o rooback, uma vez que pode acontecer casos que em vc pode lancar um exception q não volte a transação corrente. Ou seja…é isso mesmo!

Tchello

FernandoFranzini:
rogeriosantos77:
Srs,

Quando eu anoto um método como @Transactional o default dele não é caso ocorra uma exception no método ele executar um rollback da transação ?

Pergunto isso pq criei um método e anotei ele com @Transactional e esse método persiste dados em duas tabelas distintas, porém em certo ponto do método ele faz um processamento e dependendo do resultado ele lança uma Exception (ServiceException é o nome da Excessão que o método lança), porém qdo ele lança a exception um rollback não ocorre. Na verdade o rollback soocorre se eu incluir o atributo rollbackFor={ServiceException.class} na anotação

É isso memso ? O lançamento de exception não é default para ocorrer rollback ?


Nâo existe default de roolback no spring…vc tem que declarar qual é a exception que fara o rooback, uma vez que pode acontecer casos que em vc pode lancar um exception q não volte a transação corrente.

Bom, imagino que poderia ser default ele dar rollback quando houvesse exceção exceto nos que houverem declarados “norollbackfor” ou “rollbackonly”.
Mas anyway, já está esclarecida a questão. Só seria legal se encontrássemos uma referência da documentação que indicasse isso. Procurando…

Obrigado!

FernandoFranzini

Vc pode declarar o @Transaction em cima da classe que é assumido por padrão em todos os métodos…Com isso vc centraliza uma vez…

Criado 27 de outubro de 2011
Ultima resposta 28 de out. de 2011
Respostas 5
Participantes 3