| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 08:25:44
|
Titôsca
JavaChild
Membro desde: 08/03/2007 18:12:44
Mensagens: 100
Offline
|
E ai pessoal,
Estou criando uma aplicacao aqui e ao invés de criar um DAO para cada entitdade eu fiz um DAO que dá pra utilizar com qualquer tabela! Mas queria umas opiniões se é legal se ficou bom e tudo!
aguardo as críticas
This message was edited 1 time. Last update was at 25/10/2007 08:26:38
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 08:29:37
|
christielencc
JavaGuru
Membro desde: 08/09/2004 14:40:16
Mensagens: 219
Offline
|
Um DAO reutilizável. Parabéns,
|
Rumo a: Sun Certified Business Component Developer 5.0
Sun Certified Web Component Developer 1.4
Sun Certified Java Programmer 1.4
Christielen |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 08:33:11
|
Titôsca
JavaChild
Membro desde: 08/03/2007 18:12:44
Mensagens: 100
Offline
|
christielencc wrote:Um DAO reutilizável. Parabéns, 
vlw! mas podem criticar! se ele me gerar algum problema futuro no desenvolvimento da aplicação! só quero mesmo aprender os pros e contras e se tem uma forma melhor ! mas vlw hehehe!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 08:40:03
|
jonimca
JavaGuru
Membro desde: 27/05/2003 10:10:10
Mensagens: 241
Offline
|
Obs: Uma ótima pratica seria você colocar as transactions na sua camada de serviço, deixando o acesso para o DAO...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 08:41:16
|
jgbt
GUJ Master
![[Avatar]](/images/avatar/25df35de87aa441b88f22a6c2a830a17.png)
Membro desde: 04/06/2003 15:01:48
Mensagens: 1286
Localização: Porto Alegre/RS
Offline
|
os metodos de consulta podem ser melhorados.
de uma olhada nesses links:
http://www.hibernate.org/328.html
http://www.ibm.com/developerworks/java/library/j-genericdao.html
mesma ideia, so usando hibernate
bons estudos.
[]'s
|
João Bier
Desenvolvedor Java |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 08:46:20
|
Giulliano
GUJ Master
![[Avatar]](/images/avatar/7f5a17b792b687fc4c227a5c5e569dd8.jpg)
Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline
|
normalemnte a transação fica fora do DAO, embnora eu não use assim, mas as boas práticas dizem que uma transação não é responsabilidade do DAO...e sim da classe de negócios...
se vc inicia uma transação e vai salvando vários objetos diferentes aí no último save dá um erro...vc simplesmente não faz commit e dá um rollback...
do jeito que vc fez já foi feito o commit e já era....de resto esta bacana.
|
Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi
<UnTouChAbLe> |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 08:47:13
|
jgbt
GUJ Master
![[Avatar]](/images/avatar/25df35de87aa441b88f22a6c2a830a17.png)
Membro desde: 04/06/2003 15:01:48
Mensagens: 1286
Localização: Porto Alegre/RS
Offline
|
jonimca wrote:Obs: Uma ótima pratica seria você colocar as transactions na sua camada de serviço, deixando o acesso para o DAO...
eu usaria o Spring para controlar minhas transacoes, nao escreveria mais essas mesmas linhas de codigo varias vezes e me preocuparia somente com o business da minha aplicação.
[]'s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 08:47:25
|
Titôsca
JavaChild
Membro desde: 08/03/2007 18:12:44
Mensagens: 100
Offline
|
jonimca wrote:Obs: Uma ótima pratica seria você colocar as transactions na sua camada de serviço, deixando o acesso para o DAO...
explica melhor hehehehe!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 08:54:29
|
Titôsca
JavaChild
Membro desde: 08/03/2007 18:12:44
Mensagens: 100
Offline
|
Giulliano wrote:normalemnte a transação fica fora do DAO, embnora eu não use assim, mas as boas práticas dizem que uma transação não é responsabilidade do DAO...e sim da classe de negócios...
se vc inicia uma transação e vai salvando vários objetos diferentes aí no último save dá um erro...vc simplesmente não faz commit e dá um rollback...
do jeito que vc fez já foi feito o commit e já era....de resto esta bacana.
Me da um exemplo só pra mim visualizar melhor!
eu entendi que a parte de começar uma transação não deveria estar no dao não é isso??
como seria então mais ou menos?
Olha se estou pensando certo::
Dentro da camada de negocios teria um Factory que me criaria um entitymanager e abriria uma transação e devolveria esse entitymanager para mim!
ai todo metodo do DAO teria que tbém receber o entitymanager que tá com a transação em aberto para fazer as operações no banco????[b]
This message was edited 2 times. Last update was at 25/10/2007 09:04:20
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 09:10:57
|
heitor.rapcinski
Entusiasta Java
![[Avatar]](/images/avatar/80b684a68f08b78f660352dd6437b60b.jpeg)
Membro desde: 01/02/2007 12:49:11
Mensagens: 20
Localização: Curitiba-PR
Offline
|
Acho desnecessário a utilização de um DAO quando você utiliza JPA, eu constumo colocar as consultas com @NamedQuery na Entidade quando referencia apenas uma entidade e no Pacote quando referencia várias entidades. O EntityManager pode ser injetado nas classes de serviço e ele genérico o suficiente para realizar todas as operações de persistência.
só a minha opnião.
|
-------------------------------------------------
Heitor Rapcinski |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 09:30:26
|
f-schmitt
JavaChild
![[Avatar]](/images/avatar/5f96320c454aed712e4545adacdba754.jpg)
Membro desde: 29/07/2006 08:25:22
Mensagens: 116
Localização: Gravatal
Offline
|
eu utilizo em alguns DAO generico q faço um cara chamado Param que contém um Map<String, Serializable> onde coloco atributos para preencher uma query dinâmica, fica muito bom e prático! Fico bom o seu DAO
|
Java, Clarion, HB++, PostgreSQL |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 09:38:18
|
cassio
GUJ Master
![[Avatar]](/images/avatar/8ae7398026ed8f2172aefd6cbc856bc8.jpg)
Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline
|
Titôsca wrote:
Giulliano wrote:normalemnte a transação fica fora do DAO, embnora eu não use assim, mas as boas práticas dizem que uma transação não é responsabilidade do DAO...e sim da classe de negócios...
se vc inicia uma transação e vai salvando vários objetos diferentes aí no último save dá um erro...vc simplesmente não faz commit e dá um rollback...
do jeito que vc fez já foi feito o commit e já era....de resto esta bacana.
Me da um exemplo só pra mim visualizar melhor!
eu entendi que a parte de começar uma transação não deveria estar no dao não é isso??
como seria então mais ou menos?
Olha se estou pensando certo::
Dentro da camada de negocios teria um Factory que me criaria um entitymanager e abriria uma transação e devolveria esse entitymanager para mim!
ai todo metodo do DAO teria que tbém receber o entitymanager que tá com a transação em aberto para fazer as operações no banco????[b]
Pesquisa sobre o pattern "open session in view"
|
Cássio Marques
Blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 09:46:35
|
rodrigoallemand
GUJ Ranger
![[Avatar]](/images/avatar/d7b431b1a0cc5f032399870ff4710743.jpg)
Membro desde: 21/02/2005 20:19:47
Mensagens: 972
Localização: Rio de Janeiro, Recreio!!!
Offline
|
jgbt wrote:
jonimca wrote:Obs: Uma ótima pratica seria você colocar as transactions na sua camada de serviço, deixando o acesso para o DAO...
eu usaria o Spring para controlar minhas transacoes, nao escreveria mais essas mesmas linhas de codigo varias vezes e me preocuparia somente com o business da minha aplicação.
[]'s
Tambem concordo que "tecnicamente" o controle transacional deve ficar fora dos DAOs, mas sempre vi coisas desse tipo sem muito problemas. O que eu faço, normalmente é colocar um método no DAO pra controlar isso e criar uma anotação colocada no método de negócio informando o tipo de transação, ou melhor, se o commit deve ser feito ao fim ou não. Se eu quizer no meio do método comitar, eu chamo o método do DAO. A abertura
da transação fica, no meu caso, normalmente em um interceptor.
heitor.rapcinski wrote:Acho desnecessário a utilização de um DAO quando você utiliza JPA, eu constumo colocar as consultas com @NamedQuery na Entidade quando referencia apenas uma entidade e no Pacote quando referencia várias entidades. O EntityManager pode ser injetado nas classes de serviço e ele genérico o suficiente para realizar todas as operações de persistência.
só a minha opnião.
Estive pensando nisso esses dias. Esse é o primeiro projeto grande que eu utilizo JPA. São 600 entidades + ou -... já imaginaram a zona que iriamos ter no fim do projeto?!?!?
Mas Heitor, como vc imagina fazer este controle? Dentro dos objetos de negocio mesmo ou dentro das entidades?
|
Rodrigo Allemand
A culpa é minha e eu a coloco em quem eu quizer!. (Homer Simpson)
http://blog.rodrigoallemand.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 09:50:18
|
rodrigoallemand
GUJ Ranger
![[Avatar]](/images/avatar/d7b431b1a0cc5f032399870ff4710743.jpg)
Membro desde: 21/02/2005 20:19:47
Mensagens: 972
Localização: Rio de Janeiro, Recreio!!!
Offline
|
cassio wrote:Pesquisa sobre o pattern "open session in view"
Intercepting Filter
|
Rodrigo Allemand
A culpa é minha e eu a coloco em quem eu quizer!. (Homer Simpson)
http://blog.rodrigoallemand.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2007 09:52:29
|
Titôsca
JavaChild
Membro desde: 08/03/2007 18:12:44
Mensagens: 100
Offline
|
Certo gente.... agora uma dúvida que estou tendo...
geralmente fazemos a implementação de um DAO para cada ENTIDADE né... o certo é isso mesmo ter um DAO pra cada entidade??
Não se utiliza um DAO central que trabalha com todas as entidades nao? E se for necessario algo mais especifico em uma entidade extender do dao padrao e implementar da forma necessaria nesse caso???
Sobre a questão de transação:
Se o dao não ficarai responsavel por isso logo ele não iria criar o entitymanager certo???
Então meu down receberia como parametro um entitymanager que é criado pela minha regra de negocio?
Vlw!
|
|
|
 |
|
|