[RESOLVIDO] - Spring Transações - Como fazer para...  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
Bruno Lacerda
JavaEvangelist
[Avatar]

Membro desde: 16/07/2007 11:17:52
Mensagens: 371
Localização: Rio de Janeiro
Offline

Bom dia!

Pra ser curto e grosso, suponha que em um método quelquer, e nele eu tenha que persistir 2 classes.

aí eu persisto a classe x e a classe y
No decorrer do método dá erro e eu preciso dar rollback nas duas classes persistidas anteriormente.

Tem como?

This message was edited 1 time. Last update was at 23/09/2009 12:50:56


A morte do homem começa no instante em que ele desiste de aprender.
brunofuster
HelloWorld
[Avatar]

Membro desde: 05/04/2007 12:52:41
Mensagens: 14
Offline

Se o spring estiver controlando as transações no método (@Transactional) ele irá dar rollback quando ocorrer qualquer runtime exception, por default.
Você pode configurar as propriedades rollbackFor ou noRollbackFor para definir as exceptions.

This message was edited 1 time. Last update was at 23/09/2009 11:59:19

André Fonseca
JWizard
[Avatar]

Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline

oi

eu acho que você pode fazer o seguinte



Mais informações na documentação

Você é novo no GUJ?


Como fazer perguntas?



www.twitter.com/_afonseca
Bruno Lacerda
JavaEvangelist
[Avatar]

Membro desde: 16/07/2007 11:17:52
Mensagens: 371
Localização: Rio de Janeiro
Offline

Valeu Bruno Valeu André!

Fiz da forma que o André falou.

Show!!!

A morte do homem começa no instante em que ele desiste de aprender.
brunofuster
HelloWorld
[Avatar]

Membro desde: 05/04/2007 12:52:41
Mensagens: 14
Offline


Legal mas acho que não precisa. O spring já faz isso por você... é só usar a anotação @Transactional. Você pode definir propagação, isolação e rollbacks. Basta configurar o spring da forma correta e seu código vai ficar mais limpo.

Para configurar o spring, coloque o namespace

xmlns:aop="http://www.springframework.org/schema/aop"

e adicione o schema location:

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd

Depois, basta:

<tx:annotation-driven/>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

Você pode usar a anotação @Transactional na sua classe ou métodos. Além disso, você pode definir readOnly = true para não existir persistência de dados.

@Transactional
public abstract User saveUser( User user );
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team