| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 14:44:14
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5847
Localização: São Paulo/SP
Offline
|
E quando eu disse sobre DAO generico é que no meu caso eu tenho apenas um unico DAO que praticamente é um delegate da Session do hibernate, apenas passo para ela a Class<?> que esta representando e utilizo seus métodos.
|
Facebook @MarkyHitchhiker +Mark WP: MarkyTech's
Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais
DefaultTableModel?! PARE! Não faça isso! Faça melhor!
Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
DON'T PANIC!
MarkyHitchhiker's Blog! |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 14:46:01
|
viniciusfaleiro
Virtual Machine Man
![[Avatar]](/images/avatar/839185ccf72cdda4fca46bfcc95208f0.jpg)
Membro desde: 22/03/2008 20:07:50
Mensagens: 523
Offline
|
Mark_Ameba wrote:E quando eu disse sobre DAO generico é que no meu caso eu tenho apenas um unico DAO que praticamente é um delegate da Session do hibernate, apenas passo para ela a Class<?> que esta representando e utilizo seus métodos.
Eu uso assim tbm!! =) .. O Hibernate identifica e faz tudo sozinho!!
|
Linkedin: http://www.linkedin.com/pub/vinicius-faleiro/32/697/624 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 14:47:32
|
viniciusfaleiro
Virtual Machine Man
![[Avatar]](/images/avatar/839185ccf72cdda4fca46bfcc95208f0.jpg)
Membro desde: 22/03/2008 20:07:50
Mensagens: 523
Offline
|
Mark_Ameba wrote:E quando eu disse sobre DAO generico é que no meu caso eu tenho apenas um unico DAO que praticamente é um delegate da Session do hibernate, apenas passo para ela a Class<?> que esta representando e utilizo seus métodos.
Falando nisso joguei seu tower defence esses dias!! =).. Show!!
|
Linkedin: http://www.linkedin.com/pub/vinicius-faleiro/32/697/624 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 14:49:24
|
dina
JavaEvangelist
Membro desde: 14/01/2007 11:46:45
Mensagens: 356
Localização: Mogi das Cruzes - SP
Offline
|
Isso pouparia muito trabalho..
Mas, assim, uma dúvida talvez meio.. "boba"..
Mas é comum usar Hibenate em sistemas Desktop?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 14:50:36
|
viniciusfaleiro
Virtual Machine Man
![[Avatar]](/images/avatar/839185ccf72cdda4fca46bfcc95208f0.jpg)
Membro desde: 22/03/2008 20:07:50
Mensagens: 523
Offline
|
dina wrote:Isso pouparia muito trabalho..
Mas, assim, uma dúvida talvez meio.. "boba"..
Mas é comum usar Hibenate em sistemas Desktop?
Opa... tranquilo... não tem problema algum.
|
Linkedin: http://www.linkedin.com/pub/vinicius-faleiro/32/697/624 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 14:53:26
|
dina
JavaEvangelist
Membro desde: 14/01/2007 11:46:45
Mensagens: 356
Localização: Mogi das Cruzes - SP
Offline
|
Perfeito..!
Obrigada pessoal!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 16:06:04
|
rogelgarcia
GUJ Master
![[Avatar]](/images/avatar/861e8bae74e22a572164fdb59b1caa8b.jpg)
Membro desde: 21/06/2007 23:27:21
Mensagens: 1838
Offline
|
Boa observação do vinicius...
Se quiser expandir ainda mais.. tem um outro framework chamado Spring...
Nele tem uma classe chamada JdbcTemplate.. que serve para dar uma organizada nas chamadas Jdbc.. (pra voce nao ter que abrir e fechar conexao, ajuda o finally.. etc)
Voce pode dar uma olhada no fonte dessa classe.. pode te dar algumas ideias interessantes para voce usar no seu DAO genérico...
Na documentaçao dele vc pode ver como se usa.. e no fonte voce olha como foi implementado
|
Rógel Garcia, criador do framework NEXT
http://www.nextframework.org
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 16:06:25
|
dina
JavaEvangelist
Membro desde: 14/01/2007 11:46:45
Mensagens: 356
Localização: Mogi das Cruzes - SP
Offline
|
Pessoal..
Estou tentando "entender" melhor tudo isso, se eu fizer o meu sistema utilizando as técnicas utlizadas na classe Persistencia.java (segue código) seria uma forma de resolver toda essa discução sobre persistencia... generico.. etc..?
Tenho aqui o seguinte:
1. Classe Pessoa
2. Classe: Persistencia
3. Classe: Main
Obrigada pessoal!
This message was edited 1 time. Last update was at 16/03/2010 16:07:58
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 16:21:58
|
viniciusfaleiro
Virtual Machine Man
![[Avatar]](/images/avatar/839185ccf72cdda4fca46bfcc95208f0.jpg)
Membro desde: 22/03/2008 20:07:50
Mensagens: 523
Offline
|
dina wrote:Pessoal..
Estou tentando "entender" melhor tudo isso, se eu fizer o meu sistema utilizando as técnicas utlizadas na classe Persistencia.java (segue código) seria uma forma de resolver toda essa discução sobre persistencia... generico.. etc..?
Tenho aqui o seguinte:
1. Classe Pessoa
2. Classe: Persistencia
3. Classe: Main
Obrigada pessoal!
Olha só.. não sou a favor desse monte de string concatenada pra formar uma sql... pra que preparedStatement então neh?... Acho que vc tava indo no caminho certo antes... do mais, eu diria que era só vc tirar a criação da Connection de dentro do DAO como falei... Posteriormente ia ficar facil de implementar Hibernate.. mesmo que não use agora...
Outra coisa que não me agrada nesse código é que necessáriamente vc vai ter q ter o nome da tabela no banco com o mesmo nome da entidade!.. Por causa desse pobjeto.getClass().getSimpleName();
Não analisei a fundo más parece que ta usando Reflection nos campos tbm.. ou seja.. pelo jeito tem que os campos ter os mesmos nomes da colunas...
|
Linkedin: http://www.linkedin.com/pub/vinicius-faleiro/32/697/624 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 16:22:20
|
rogelgarcia
GUJ Master
![[Avatar]](/images/avatar/861e8bae74e22a572164fdb59b1caa8b.jpg)
Membro desde: 21/06/2007 23:27:21
Mensagens: 1838
Offline
|
Perfeito dina.. é por esse caminho mesmo...
Só que esse código não anula o DAO.. então voce vai ter o PessoaDAO de qualquer jeito
E o PessoaDAO pode usar esse código de persistencia...
-----
Para não ter que repetir a chamada em todos os DAOs da sua aplicacao
Vc pode fazer um GenericDAO que já tem os métodos que chamam o persistencia...
E o PessoaDAO extends GenericDAO
|
Rógel Garcia, criador do framework NEXT
http://www.nextframework.org
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 16:24:27
|
rogelgarcia
GUJ Master
![[Avatar]](/images/avatar/861e8bae74e22a572164fdb59b1caa8b.jpg)
Membro desde: 21/06/2007 23:27:21
Mensagens: 1838
Offline
|
Isso que voce fez na classe Persistencia é o que o Hibernate faz...
Só que o hibernate tem umas flexbilidades a mais...
|
Rógel Garcia, criador do framework NEXT
http://www.nextframework.org
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 16:57:49
|
dina
JavaEvangelist
Membro desde: 14/01/2007 11:46:45
Mensagens: 356
Localização: Mogi das Cruzes - SP
Offline
|
rogelgarcia
rogelgarcia wrote:Perfeito dina.. é por esse caminho mesmo...
Rogel, QUE BOM!
rogelgarcia wrote:Só que esse código não anula o DAO.. então voce vai ter o PessoaDAO de qualquer jeito
Sim, consigo ver o motivo disso.
Só para exemplificar e ver se eu entendi mesmo,
1. Eu tenho as classes Pessoa e Curso
2. Portanto terei os seguintes DAO's PessoaDAO e CursoDAO.
3. Ambos terão como pai a minha classe de Persistência.
PessoaDAO extends Persistencia
CursoDAO extends Persistencia
Supondo que na classe PessoaFrame tem o botão SALVAR o evento do botão chamará um método da classe PessoaDAO, e como este herda tudo de Persistencia eu chamo o método Salvar(Pessoa p)
Correto?
-----
rogelgarcia wrote:Para não ter que repetir a chamada em todos os DAOs da sua aplicacao
Vc pode fazer um GenericDAO que já tem os métodos que chamam o persistencia...
E o PessoaDAO extends GenericDAO
Hum..... se eu fizer como eu falei acima (as minhas classes DAO extends minha Persistencia), utlizar esse GenericDAO seria útil ainda?
Outra coisa que vc disse:
rogelgarcia wrote:Isso que voce fez na classe Persistencia é o que o Hibernate faz... Só que o hibernate tem umas flexbilidades a mais...
Já que faz praticamente a mesma coisa, vc acha que poderia utilizar isso ao invés de estudar e aplicar Hibernate?
viniciusfaleiro
viniciusfaleiro wrote:não sou a favor desse monte de string concatenada pra formar uma sql... pra que preparedStatement então neh?... Acho que vc tava indo no caminho certo antes... do mais, eu diria que era só vc tirar a criação da Connection de dentro do DAO como falei... Posteriormente ia ficar facil de implementar Hibernate.. mesmo que não use agora...
Foi uma forma encontrada para facilitar o acesso ao BD e diminuir o trabalho, apesar da concatenação de Strings, isso pode funcionar para todo o meu sistema.... Como eu to fazendo o diagrama de sequencias do meu projeto de TCC, eu teria que decidir agora como vou fazer o acesso ao BD.. por isso que tomei a decisão de fazer desta forma....
Pessoal, obrigadão pelas respostas e pela ajuda!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 17:04:37
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5847
Localização: São Paulo/SP
Offline
|
viniciusfaleiro wrote:
Mark_Ameba wrote:E quando eu disse sobre DAO generico é que no meu caso eu tenho apenas um unico DAO que praticamente é um delegate da Session do hibernate, apenas passo para ela a Class<?> que esta representando e utilizo seus métodos.
Falando nisso joguei seu tower defence esses dias!! =).. Show!!
Ha legal.. pena que to sem tempo para continuar.
E dina acredito que seja muito mais facil usar Hibernate do que tentar criar de acordo como voce faz, Reflection é incrivel e seria legal aprender. Mas se não for extremamente OO você vai ser obrigada a ter PessoaDAO, AlunoDAO e etc..
Se quiser uma ajuda no projeto da uma olhada no meu projeto no google code e de uma olhada na classe FieldResolver e o pacote mark.util.el.*
|
Facebook @MarkyHitchhiker +Mark WP: MarkyTech's
Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais
DefaultTableModel?! PARE! Não faça isso! Faça melhor!
Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
DON'T PANIC!
MarkyHitchhiker's Blog! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 17:27:25
|
rogelgarcia
GUJ Master
![[Avatar]](/images/avatar/861e8bae74e22a572164fdb59b1caa8b.jpg)
Membro desde: 21/06/2007 23:27:21
Mensagens: 1838
Offline
|
1. Eu tenho as classes Pessoa e Curso
2. Portanto terei os seguintes DAO's PessoaDAO e CursoDAO. SIM
3. Ambos terão como pai a minha classe de Persistência. SIM ou uma GenericDAO que usa a classe persistencia
Supondo que na classe PessoaFrame tem o botão SALVAR o evento do botão chamará um método da classe PessoaDAO, e como este herda tudo de Persistencia eu chamo o método Salvar(Pessoa p)
Correto? Correto!
Hum..... se eu fizer como eu falei acima (as minhas classes DAO extends minha Persistencia), utlizar esse GenericDAO seria útil ainda? Podemos dizer que o persistencia é o GenericDAO..
Já que faz praticamente a mesma coisa, vc acha que poderia utilizar isso ao invés de estudar e aplicar Hibernate? Poderia utilizar, mas com hibernate ficaria melhor..
Foi uma forma encontrada para facilitar o acesso ao BD e diminuir o trabalho, apesar da concatenação de Strings, isso pode funcionar para todo o meu sistema.... Como eu to fazendo o diagrama de sequencias do meu projeto de TCC, eu teria que decidir agora como vou fazer o acesso ao BD.. por isso que tomei a decisão de fazer desta forma....
De qualquer jeito voce terá a concatenacao para criar as queries... mas voce pode usar um preparedStatement.. e no lugar dos valores ao invés de concatenar na String o valor mesmo.. vc coloca ? (o caracter interrogação).. e depois seta os valores reais no preparedStatement
|
Rógel Garcia, criador do framework NEXT
http://www.nextframework.org
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 17:38:30
|
dina
JavaEvangelist
Membro desde: 14/01/2007 11:46:45
Mensagens: 356
Localização: Mogi das Cruzes - SP
Offline
|
rogelgarcia wrote:
De qualquer jeito voce terá a concatenacao para criar as queries... mas voce pode usar um preparedStatement.. e no lugar dos valores ao invés de concatenar na String o valor mesmo.. vc coloca ? (o caracter interrogação).. e depois seta os valores reais no preparedStatement
Rogel, boa!! Tentarei fazer isso!! Vc está me ajudando muito!! Valeu mesmo pela paciência e pelas explicações! Terei que sair agora, mais tarde retorno aplico o que vc falou e posto aqui o resultado final..... Obrigada novamente!
Mark_Ameba Hum, sim, talvez seja mesmo mais fácil, o problema é que precisaria tirar um tempo para poder estudar hibernate...
Hum.. qual é o seu projeto no google?
Obrigada pelas dicas Mark!
|
|
|
 |
|
|