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 ?
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…