| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/07/2005 22:17:04
|
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!
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/07/2005 23:46:28
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2005 00:16:15
|
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
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2005 01:03:06
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2005 08:50:00
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2005 10:02:14
|
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
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2005 11:16:10
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2005 11:23:56
|
javaRJ
Debugger
Membro desde: 03/07/2005 16:00:04
Mensagens: 52
Offline
|
Thiago, você poderia postar o código como exemplo ?
Muito Obrigado!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2005 11:27:18
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline
|
Tá ai.... Façam críticas à vontade!
Abraços!
Thiago
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2005 11:44:07
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2005 11:47:00
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
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?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2005 11:57:47
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2005 11:59:21
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/07/2005 13:35:18
|
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
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/07/2005 12:17:21
|
aspirante
Entusiasta Java
![[Avatar]](/images/avatar/d63fbf8c3173730f82b150c5ef38b8ff.jpg)
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 |
|
|
 |
|
|