Controle de transação sem EJB  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Galera,

Como vocês costumam fazer controle transacional nas suas aplicações, sem o uso de EJB (EJB Container)?

As nossas aplicações antigas foram não tão bem arquitetadas e fazem algo mais ou menos assim:

No Action ou Delegate:

Como vocês costumam fazer isso?

Eu imagino que a responsabilidade de pegar (criar/solicitar) uma conexão seja da classe DAO e não da Action ou Delegate, certo?

Até pensei em criar uma classe Transaction que faria o controle da transação e trabalharia direto com o DAO. Algo mais ou menos assim:



Que tal?

This message was edited 1 time. Last update was at 19/11/2004 10:55:19


gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

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ó.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

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,
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

cv wrote: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 é.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
kuchma
Moderador
[Avatar]

Membro desde: 17/01/2003 19:36:16
Mensagens: 1231
Localização: Curitiba - PR
Offline

louds wrote: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.


Bem lembrado. Pior que isso eh quando os motivos nao sao tecnicos, mas sim politicos, administrativos, climaticos, etc...


Marcio Kuchma

E tu, Belém-Efrata, pequena demais para figurar como grupo de milhares de Judá, de ti me sairá o que há de reinar em Israel, e cujas origens são desde os tempos antigos, desde os dias da eternidade. Mq 5:2, Miquéias, 750 AC aprox.
[WWW] [ICQ]
Gerson
JavaChild
[Avatar]

Membro desde: 26/01/2003 19:48:37
Mensagens: 113
Localização: São Paulo
Offline

Argh! :P

Nada como usar IoC e AOP:




(no caso do spring...)

onde o transactionManager pode ser um "org.springframework.orm.hibernate.HibernateTransactionManager", "org.springframework.transaction.jta.JtaTransactionManager", etc.


Gerson K. Motoyama

This message was edited 1 time. Last update was at 14/12/2004 14:14:08


---

Gerson K. Motoyama
(SCJA, SCJP, SCWCD, SCBCD, SCEA-I)
[MSN]
FApache
Smalltalk
[Avatar]

Membro desde: 26/12/2004 21:21:17
Mensagens: 3
Offline

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...

É uma idéia para um legado qualquer.

Forte Apache
douglasfs
JavaEvangelist
[Avatar]

Membro desde: 31/12/2002 17:50:02
Mensagens: 305
Localização: São Paulo / Brasil
Offline

Nos projetos atuais eu estou utilizando o iBatis DAO ( http://www.ibatis.com/common/dao.html ).

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 final fica +- assim :



No caso o "endTransaction" verifica se foi dado "commit", se nao foi ele automaticamente faz o "rollback"

SCJP 1.4, SCWCD 1.4, SCBCD 5.0 beta
emurai
What is classpath?

Membro desde: 17/08/2004 18:02:02
Mensagens: 6
Offline

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 :



Se tiver interesse é só falar.

abraços,

Eduardo Murai
SCJP & SCEA

This message was edited 1 time. Last update was at 04/02/2005 14:23:19


Eduardo Murai Soares
J2EE Architect
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

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!

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
smota
Moderador
[Avatar]

Membro desde: 21/02/2003 16:19:19
Mensagens: 1647
Offline

danieldestro wrote: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)

"Perfection is reached not when there's nothing more to add but when there's no more to take out"
urubatan
Moderador
[Avatar]

Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline

cv wrote: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

[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
[WWW]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

This message was edited 1 time. Last update was at 04/02/2005 17:42:33


Former LIPE.
[ICQ]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

UHAHUAHUAHUAHUAHUA

Impressao minha ou o Lipe perde o dia no google images?
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
caiofilipini
GUJ Master
[Avatar]

Membro desde: 26/06/2003 15:17:59
Mensagens: 1255
Localização: São Paulo
Offline

urubatan wrote:
cv wrote: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!"...


eu até ia dizer isto, mas sem a boina e a gola role


No meu caso, eu também tiraria o "ui"...

Caio N. Filipini
"There is no spoon."
[Email] [WWW]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team