[Logo] Neo Framework Forum
  [Search] Busca   [Recent Topics] Tópicos Recentes   [Members]  Lista de Usuários   [Groups] De volta para a página principal 
[Register] Registrar / 
[Login] Entrar 
Transação spring.  XML
Índice dos Fóruns -> Dúvidas
Autor Mensagem
fmpizani
Equipe

Membro desde: 03/09/2007 09:09:34
Mensagens: 13
Offline

Fala galera, tudo bom?

Estou tentando utilizar transações na minha camada de serviço, mas estou tendo alguns problemas.

Estava pensando em utilizar o mecanismo de transações do spring.

Queria saber se alguém já utilizou este tipo de transações. Eu tenho um método do meu service que efetua duas operações. Eu quero que, se ocorrer algum erro em qualquer das operações, seja efetuado um rollback.

Valeu galera!

[Email] [Yahoo!]
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Você pode usar assim no seu DAO:
Code:
 
 @Override
 	public void updateSaveOrUpdate(final SaveOrUpdateStrategy save) {
 
 		getTransactionTemplate().execute(new TransactionCallback(){
 			public Object doInTransaction(TransactionStatus status) {
                                  //qry do save aqui
 				return null;
 			}
 		});
 	}
 

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
fmpizani
Equipe

Membro desde: 03/09/2007 09:09:34
Mensagens: 13
Offline

Oi Pedro, obrigado pela resposta.

Na verdade eu estou querendo que o meu método do service esteja dentro de uma transação. Este método chama dois métodos de dao's diferentes. Eu queria que se ocorresse um erro em qualquer um dos dao's a transação fosse cancelada e fosse efetuado o rollback.

Alguma idéia?

Obrigado
[Email] [Yahoo!]
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Experimenta por isso aqui no seu service:

Code:
 protected TransactionTemplate transactionTemplate;
 
 public TransactionTemplate getTransactionTemplate() {
 		return transactionTemplate;
 	}
 
 	public void setTransactionTemplate(TransactionTemplate transactionTemplate) {
 		this.transactionTemplate = transactionTemplate;
 	}
 


Ai poe o mesmo código que te mandei anteriormente.

[]'s

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
fmpizani
Equipe

Membro desde: 03/09/2007 09:09:34
Mensagens: 13
Offline

Valeu Pedro!

Desse jeito funcionou.

O meu código ficou assim:

Code:
         protected TransactionTemplate transactionTemplate;
 
 	public void saveOrUpdate(final BEAN bean) {
 
 		getTransactionTemplate().execute(new TransactionCallbackWithoutResult() {
 			protected void doInTransactionWithoutResult(TransactionStatus status) {
 				GeoService.super.saveOrUpdate(bean);
 
 				if (hasSpatialElement()) {
 					spatialService.saveOrUpdate(bean);
 				}
 			}
 		});
 	}
 
 	public TransactionTemplate getTransactionTemplate() {
 		return transactionTemplate;
 	}
 
 	public void setTransactionTemplate(TransactionTemplate transactionTemplate) {
 		this.transactionTemplate = transactionTemplate;
 	}
 
 


Abraço!
[Email] [Yahoo!]
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

vlw!

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
 
Índice dos Fóruns -> Dúvidas
Ir para:   
Powered by JForum 2.1.7 © JForum Team