Arquitetura de uma aplicação Swing  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

Sei lá, o caso não é usar ou não patterns, é não procurar meter patterns onde eles não foram chamados

Colocar toda a coleção do "Padrões de Projeto" ou da coleção do Martin Fowler, não vai resolver o problema, é só ver o que o mestre Jedi Gamma falou:

http://www.artima.com/lejava/articles/gammadp.html

Sobre as transações, a parada seria mais ou menos o seguinte, imagine que você tem que, antes de confirmar uma venda, garantir que o cartão do cliente é válido, a transação da venda só pode ser concluída quando você obtiver a resposta da prestadora dizendo que está tudo "livre".

O que você faz? Diz pro cliente que a compra está aguardando confirmação e deixa alguém esperando pela mensagem (olha o JMS aqui ó), quando a mensagem chegar, você vê se tá liberado ou não e "termina" a transação. Isso é um caso onde a transação não está no banco de dados. Mas como o Phillip disse, se a transação é só no banco, ela deveria estar dentro dos seus DAOs, não precisa se extender não.

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
Fabio Kung
JavaEvangelist

Membro desde: 08/03/2004 08:24:47
Mensagens: 445
Localização: São Paulo
Offline

Maurício Linhares wrote:Mas como o Phillip disse, se a transação é só no banco, ela deveria estar dentro dos seus DAOs, não precisa se extender não.


Desse modo, como não cair no anti-pattern "transaction (session) per operation" ?

Procurando por oportunidades de emprego?
OndeTrabalhar.com
OndeTrabalhar.com Java?


http://blog.caelum.com.br


Fabio Kung
[WWW] [MSN] [ICQ]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

Olá

Você pdoe manter a transação aberta se seu DAO possuir informação de estado. A questão é que não há porque essa transação deixar a camada de persistência.


Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

FcK wrote:
Maurício Linhares wrote:Mas como o Phillip disse, se a transação é só no banco, ela deveria estar dentro dos seus DAOs, não precisa se extender não.


Desse modo, como não cair no anti-pattern "transaction (session) per operation" ?


Olha, se você tá numa aplicação web, guarda a sessão e a transação em uma thread local e fecha com um filtro no fim do serviço, se você tá numa aplicação desktop usa aspectos pra pegar o fim de um método de serviço qualquer e fecha a sessão e a transação (também em uma tread local).

E qual o problema de se ter "transaction per operation" quando você está usando um pool de conexões? Elas não vão ser abertas e fechadas a todo o instante, eu acredito que o impacto seja mínimo dentro do sistema.

Outra coisa Phillip, como é que dá pra controlar isso usando estados no Dao, eu chamo um método qualquer pra "fechar" tudo no dao quando terminar?

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team