| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 14:27:28
|
RaulCarlin
JavaEvangelist
![[Avatar]](/images/avatar/0b94ce08688c6389ce7b68c52ce3f8c7.png)
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!
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 17:23:17
|
Kenobi
GUJ Master
![[Avatar]](/images/avatar/cf2226ddd41b1a2d0ae51dab54d32c36.jpg)
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. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/06/2007 22:26:09
|
RaulCarlin
JavaEvangelist
![[Avatar]](/images/avatar/0b94ce08688c6389ce7b68c52ce3f8c7.png)
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?
|
|
|
 |
|
|
|
|