Eu uso o padrão do “Transactional Command”.
Crio comandos que são executados dentro de um contexto transacional.
Simples assim. Funciona bem e coloca todo controle de transações, e gerenciamento de recursos associados, em um local só.
cv1
Voce tambem pode botar uma boina, usar uma gola role e dizer “afe, que coisa mais anos 90, eu faco isso tao melhor com o Spring*, ui!”…
= ou qualquer outro container de injecao de dependencias, mas o Spring ja vem com isso embutido, e pronto pra usar,
louds
cv:
Voce tambem pode botar uma boina, usar uma gola role e dizer “afe, que coisa mais anos 90, eu faco isso tao melhor com o Spring*, ui!”…
Mas isso também depende muito do ambiente de desenvolvimento que você está. Nos atuais projetos que eu tou trabalhando seria mais dificil conseguir poder usar o springfranework e instegrá-lo à plataforma que re-escrever todo pacote de gerenciamento de transações dele.
Mas que usar o spring é uma boa idéia, isso é.
kuchma
Bem lembrado. Pior que isso eh quando os motivos nao sao tecnicos, mas sim politicos, administrativos, climaticos, etc… :roll:
onde o transactionManager pode ser um "org.springframework.orm.hibernate.HibernateTransactionManager", "org.springframework.transaction.jta.JtaTransactionManager", etc.
Gerson K. Motoyama
FApache
Bem, mesmo com código legado me parece que o uso de Spring e Inversão de Controle não deve ser tão difícil… A vantagem é que já está pronto.
De q q maneira, vc poderia fazer com q sua conexão fosse finalizada/gerenciada usando um Servlet Filter…
Super simples de configurar (tem um manual bem explicativo para download) e pode ser plugado no JDO, Hibernate, JDBC “classico” e no iBatis SQLMaps (no qual eu uso).
No caso o “endTransaction” verifica se foi dado “commit”, se nao foi ele automaticamente faz o “rollback”
E
emurai
Fala Destrão !
Eu criei um Façade base com controle de transação para um cliente da Discover, que possui os metodos getConnection(), commit(), rollback() e releaseConnection().
Ele suporta aninhamento de chamadas utilizando o conceito de Stack. Ex simplificado :
publicclassFacadeEspecificoextendsBaseFacade{publicvoidexecutarServicoPrincipal(){Connectionconn=getConnection();try{UmDAOdao=newUmDAO();dao.setConnection(conn);dao.gravarDados();.............executarServicoAux();..............commit();}catch(Exceptione){rollback();}finally{releaseConnection();}}publicvoidexecutarServicoAux(){// O Base façade utilizará a mesma connection recuperada em // executarServicoPrincipalConnectionconn=getConnection();OutroDAOdao=newOutroDAO();dao.setConnection(conn);dao.gravarOutrosDados();............}}
Se tiver interesse é só falar.
abraços,
Eduardo Murai
SCJP & SCEA
danieldestro
Entendí Murai.
Mas no meu caso eu gostaria de abstrair esse controle de transação do tipo de acesso aos dados. Explico!
O DAO já é uma abstração para eu não me preocupar qual a fonte dos dados. Eu queria o mesmo com a transação.
Sacou? Valeu!
smota
danieldestro:
Mas no meu caso eu gostaria de abstrair esse controle de transação do tipo de acesso aos dados. Explico!
O DAO já é uma abstração para eu não me preocupar qual a fonte dos dados. Eu queria o mesmo com a transação.
Sacou? Valeu!
Mas mas … não é pra isso que serve o JTA? (Java Transaction API)
(Posso estar viajando … vc quer abstrair o controle de transação do DAO ou o modelo de transação? se for a segunda opçao acho que a JTA é pra isso, se for a primeira opção alguma soluçãozinha de IOC fica legal)
urubatan
cv:
Voce tambem pode botar uma boina, usar uma gola role e dizer “afe, que coisa mais anos 90, eu faco isso tao melhor com o Spring*, ui!”…
= ou qualquer outro container de injecao de dependencias, mas o Spring ja vem com isso embutido, e pronto pra usar,
eu até ia dizer isto, mas sem a boina e a gola role
_fs
cv1
UHAHUAHUAHUAHUAHUA
Impressao minha ou o Lipe perde o dia no google images?
caiofilipini
eu até ia dizer isto, mas sem a boina e a gola role :)
No meu caso, eu também tiraria o “ui”… :mrgreen:
Gustavo_Tavares_Seix
Este link: http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step.html é um tutorial do Spring com o título: Developing a Spring Framework MVC application step-by-step. O que eu entendi é que, além de todas as características do Spring, que são abordadas neste fórum, me pareceu que o Spring também é um Framework MVC, significando que teria papel semelhante ao Struts ou Webwork, por exemplo. Alguém poderia dar uma esclarecida nesta questão?
urubatan
um dos componentes do spring é um framework MVC sim
tem até alguns recursos bem interessantes, to meio sem tempo agora, mas volto aqui depois e escrevo um pouco sobre eles
Gustavo_Tavares_Seix
Ok, valeu! O que eu achei interessante é que li aqui no fórum coisas boas do Webwork, como framework MVC, e do Spring, para controle de transações, mas nada ainda do Spring como Framework MVC. Penso que talvez seja interessante usar somente o Framework Spring MVC para ambas as tarefas. :?
F
fabio.patricio
Se nao me engano o novo site do RSJug (www.rsjug.org) esta sendo desenvolvido (acho que o próprio Urubata é quem ta tocando isso) com o Spring como o Framework MVC. É só dar uma olhada no projeto do RSJug no java net.
]['s
urubatan
exatamente, o site do RSJUG ta sendo desenvolvido (ta meio parado, mas eu termino uma hora destas ) utilizando o SPring MVC e mais diversas partes do spring
quem quiser dar uma olhada é só baixar os fontes do java.net