Opinem sobre meu DAO GENERICO  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
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

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
[Email] [MSN]
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!
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...
jgbt
GUJ Master
[Avatar]

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
[Email]
Giulliano
GUJ Master
[Avatar]

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>
[Email] [WWW] [MSN]
jgbt
GUJ Master
[Avatar]

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
[Email]
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!
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

heitor.rapcinski
Entusiasta Java
[Avatar]

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
[Email]
f-schmitt
JavaChild
[Avatar]

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
[MSN]
cassio
GUJ Master
[Avatar]

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
rodrigoallemand
GUJ Ranger
[Avatar]

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
[WWW] [MSN]
rodrigoallemand
GUJ Ranger
[Avatar]

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
[WWW] [MSN]
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!
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team