@Transactional no Spring, métodos e/ou classes?  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
RaulCarlin
JavaEvangelist
[Avatar]

Membro desde: 20/05/2005 12:58:30
Mensagens: 389
Localização: São Paulo
Offline

Olá,

Estou dando uma refatorada nas transações no meu sistema e gostaria da opnião de todos.

Estou usando Spring / HibernateTransactionManager.

Tenho no XML os métodos que necessitam de transação:



Porém, gostaria de saber sobre a anotação @Transactional. Vi que você pode definir em sua classe(todos os métodos terão transação) ou método, porém o que mais devo fazer para configurar?

Alguém recomenda definir as transações via AOP?

Valeu!
[WWW]
Kenobi
GUJ Master
[Avatar]

Membro desde: 14/11/2003 13:06:37
Mensagens: 1678
Localização: Brasil
Offline

Na verdade ,você está criando o proxy para suas classes na mão.

Você precisa substituir seu código por algo assim :

<tx:annotation-driven transaction-manager="transactionManager"/>

coloca isso acima do transactionManager e seu código abaixo pode apagar o transactionDef se for usar as transações por annotation.

O Isolamento entre outras características, poderão ser controladas na própria annotation.


Para cada classe anotada, o Spring irá criar o proxy automaticamente.

Você ainda pode usar a annotation com o AspecJ para contextos fora do Spring, mas aí vc dá uma olhada no capítulo 9 da documentação



----------------------------------------------------------
SOA|EXPERT - http://www.soaexpert.com.br
SOA de um jeito simples e eficiente.
[WWW] [MSN] [ICQ]
RaulCarlin
JavaEvangelist
[Avatar]

Membro desde: 20/05/2005 12:58:30
Mensagens: 389
Localização: São Paulo
Offline

Funcionou perfeitamente, só não to entendendo uma coisa:

Defini na minha classe de acesso a banco a anotação @Transactional(readOnly=true)

Porém, tenho um método de negócio muito complexo que exige alguns updates no banco, daí utilizei @Transactional(propagation = Propagation.REQUIRES_NEW).

O problema é que ele não utiliza a transaão do método como a principal e, além da transação que crio no método, ele continua criando pequenas transações pros métodos do meu DAO.

Ele não deveria assumir a transação de maior escopo, neste caso, ignorando a anotação da minha classe?
[WWW]
 
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Ir para:   
Powered by JForum 2.1.8 © JForum Team