dao + connection  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
javaRJ
Debugger

Membro desde: 03/07/2005 16:00:04
Mensagens: 52
Offline

Olá..
Estou tentando utilizar alguns DAOs, até aí tudo bem.
Mas cheguei no ponto de criar a conexão com o DB...
Estou pensando em utilizar um pool de conexões também!

Qual seria a melhor forma de criar essa conexão ? ter um método que "fale" com o DataSource e me retorne a conexão ?

Obrigado!
Mauricio Linhares
Moderador
[Avatar]

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

Seria bom que o seu Dao tivesse acesso ao pool e pedisse a ele a conexão.

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

Screencast de Introdução a linguagem Objective-C
[WWW]
fabio.patricio
GUJ Master

Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline

Maurício Linhares wrote:Seria bom que o seu Dao tivesse acesso ao pool e pedisse a ele a conexão.


Ou...usando injecao de dependencia.
Alguem pegaria a conexao do teu pool e "injetaria" no teu Dao.
Eu ainda prefiro essa abordagem.

]['s

Fabio Patricio
http://blog.wansoft.com.br

[WWW] [MSN] [ICQ]
ZehOliveira
GUJ Ranger

Membro desde: 12/12/2003 22:13:49
Mensagens: 964
Localização: Maceio-AL
Offline

Também acho injeção de dependência uma abordagem muito melhor do que cada DAO pedir uma conexão pro pool.

Em um cenário em que um DAO chama outro, é mais conveniente injetar a conexão atual pro DAO chamado do que fazer com que esse também peça uma conexão.

Se no caso ainda houver transação, aí fedeu de vez... Não vejo outro modo de fazer DAOs com transação sem usar DI pra passar as conexões.

This message was edited 1 time. Last update was at 11/07/2005 01:03:42

Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline

Olá!

Em uma app de final de curso, no contrutor do meu dao eu faço assim:



Quando eu chamo este método getConnection da classe SabesDataSource, se a conexão não está aberta e a transação não foi iniciada, ele cria pra mim e inicia a transação.

Eu acho esta abordagem bém legal. Vc poderia fazer com que este método getConnection soubesse pegar sua connexão à partir de um pool.

Vc pode depois cria um GenericAbstractDAO por exemplo com um contrutor igual ao que citei acima. Ai todos seus DAO's estendem ele e herdam esta forma de coletar a connection!

Abraços!
Thiago Senna
[Email]
fabio.patricio
GUJ Master

Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline

Thiago,

Nesse teu exemplo que controla o ciclo de vida da transacao? Quem faz o commit ou rollback? E ainda, se tens operacao em cascata como fica as transacoes?

]['s

Fabio Patricio
http://blog.wansoft.com.br

[WWW] [MSN] [ICQ]
Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline

Olá Fabio!

Eu tenho também os métodos



A idéia inicial é controlar a transação em minhas actions!

Alguma crítica? Quer que eu poste o código do SabesDataSource?


Abraços!
Thiago
[Email]
javaRJ
Debugger

Membro desde: 03/07/2005 16:00:04
Mensagens: 52
Offline

Thiago, você poderia postar o código como exemplo ?

Muito Obrigado!
Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline



Tá ai.... Façam críticas à vontade!

Abraços!
Thiago
[Email]
Mauricio Linhares
Moderador
[Avatar]

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

Fazer commit, rollback de transações dentro do Action é muito feio, o código de acesso ao banco de dados não pode se "espalhar" para fora da camada de persistência (ou pelo menos não deveria poder).

Se isso é uma aplicação web, você poderia usar um filtro pra fazer isso, dar o commit ou rollback da transação e fechar a conexão quando tudo terminasse, mas não deixe esse código dentro do action.

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

Screencast de Introdução a linguagem Objective-C
[WWW]
Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline

Boa! Acho que colocar o controle da transação em um filtro é mais conveniente!

Se for assim, os meu DAO's devem garantir o Rollback? Correto?
[Email]
Mauricio Linhares
Moderador
[Avatar]

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

Thiago Senna wrote:
Se for assim, os meu DAO's devem garantir o Rollback? Correto?


O filtro pode fazer isso também, vai evitar muitas linhas de código repetidas nos seus DAOs.

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

Screencast de Introdução a linguagem Objective-C
[WWW]
Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline

Maurício Linhares wrote:
Thiago Senna wrote:
Se for assim, os meu DAO's devem garantir o Rollback? Correto?


O filtro pode fazer isso também, vai evitar muitas linhas de código repetidas nos seus DAOs.


Blz! Deixa comigo entaum!

Abraços!
Thiago
[Email]
fabio.patricio
GUJ Master

Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline

A meu ver o Dao tem que ficar independente da camada de transacao, justamente pra nao ficar acoplado.
Imagina que hoje tu tem um modelo de transacao baseado so no JDBC, utilizando o commit e rollback da interface connection e derrepente tu resolve mudar isso utilizando JTA por exemplo. Se isso estiver acoplado no teu DAO o refactoring vai ser grande.

Esse esquema de filtro é bom, antes de usar o Spring com AOP eu fazia parecido com isso, mas usando um interceptor do WebWork.

]['s

Fabio Patricio
http://blog.wansoft.com.br

[WWW] [MSN] [ICQ]
aspirante
Entusiasta Java
[Avatar]

Membro desde: 17/08/2003 01:42:59
Mensagens: 20
Offline

Hm, eu ficaria também com a abordagem da inversão de controle neste caso, para os mais moderninhos, a Injeção por Dependência
O Spring tem uma abordagem muito legal, e a configuração do teu JDBC não precisa ficar dentro de uma "Connection", deixa que tudo isso seja feito pelo spring

Uma tradução do artigo do Fowler feita pelo Ronald Tetsuo
http://www.javafree.org/content/view.jf?idContent=1


Abraços!

Dalton Camargo
dalton(at)javafree.com.br
www.javafree.org
javaBB.org
[MSN]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team