| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 17:20:15
|
pm
JavaEvangelist
Membro desde: 28/01/2005 12:42:15
Mensagens: 438
Offline
|
Bom pessoal...
Não me senti confrotavel para utilizar Spring, por total ignorancia sobre a tecnologia e falta de tempo para estuda-la.
Estava tentando utilizar o Spring para injetar meu DAO no Objeto de dominio.
Ae passaram outras alternativas pela minha cabeça, uma delas seria utilizar um DAOFactory... mas pesquisando vi varias implementações, mas todas com uma quantidade muito grande de interfaces.
Meu sistema é simples e dificilmente terá seu modelo de persistencia alterado. Sera hibernate e oracle.
Minha ideia seria simplismente instanciar o DAO como um atributo estatico.
Vou colocar o codigo para simplificar:
Objeto de dominio
Isso é suficiente ou ta uma mrda ?
vlw
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 18:54:08
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
pm wrote:Bom pessoal...
Não me senti confrotavel para utilizar Spring, por total ignorancia sobre a tecnologia e falta de tempo para estuda-la.
Estava tentando utilizar o Spring para injetar meu DAO no Objeto de dominio.
Ae passaram outras alternativas pela minha cabeça, uma delas seria utilizar um DAOFactory... mas pesquisando vi varias implementações, mas todas com uma quantidade muito grande de interfaces.
Meu sistema é simples e dificilmente terá seu modelo de persistencia alterado. Sera hibernate e oracle.
Se seu sistema é simples e não será alterado para quê quer um DAO ??
Não use o DAO e pronto. Acabaram seus problermas. Use só o hibernate.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 19:33:53
|
pm
JavaEvangelist
Membro desde: 28/01/2005 12:42:15
Mensagens: 438
Offline
|
mas ...apesar de ser simples eu quero implementar alguns conceitos de DDD.
e não quero misturar as responsabilidades das camadas, por isso eu pensei no DAO....
Entity - Repository(apenas uma interface, esta implementada pelo DAO)
DAO
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 20:24:44
|
acdesouza
JavaChild
![[Avatar]](/images/avatar/d4535535b455dd9b910ba56286a4d8f5.jpg)
Membro desde: 20/08/2007 02:57:52
Mensagens: 110
Localização: Rio de Janeiro
Offline
|
Dá uma procurada no GUJ que tem muito material sobre o assunto.
Mas acredito que a mensagem resumo do Philip Calçado sobre a thread que trata de DAOs nas classes de negócio resolva seu problema.
|
[],
AC |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 21:02:48
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
pm wrote:mas ...apesar de ser simples eu quero implementar alguns conceitos de DDD.
e não quero misturar as responsabilidades das camadas, por isso eu pensei no DAO....
Entity - Repository(apenas uma interface, esta implementada pelo DAO)
Você tem os conceitos trocados. DAO não serve para acessar o banco de dados. DAO serve para isolar o banco de dados para que vc posssa substitui-lo mais tarde. Mas vc não quer fazer isso, logo vc não precisa do DAO.
Vc quer ter camadas , tudo bem. Mas vc não precisa do DAO.
Não complique o que é simples. Construa os seus repositórios e use o Hibernate diretamente. Vc terá uma camada
e isolamento sem precisar de DAO desde que só use o hibernate dentro dos repositórios.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 23:25:41
|
acdesouza
JavaChild
![[Avatar]](/images/avatar/d4535535b455dd9b910ba56286a4d8f5.jpg)
Membro desde: 20/08/2007 02:57:52
Mensagens: 110
Localização: Rio de Janeiro
Offline
|
sergiotaborda wrote: Você tem os conceitos trocados. DAO não serve para acessar o banco de dados. DAO serve para isolar o banco de dados para que vc posssa substitui-lo mais tarde. Mas vc não quer fazer isso, logo vc não precisa do DAO.
A idéia do Data Access Object não é de isolar, só, o banco de dados, mas qualquer repositório de dados do resto do sistema.
A implementação de uma classe DAO, é a explicação do DataMapper, de Martin Fowler. A idéia é ter uma classe responsável por persistir a entidade de domínio.
sergiotaborda wrote: Vc quer ter camadas , tudo bem. Mas vc não precisa do DAO.
Ninguém precisa de um padrão de projeto/design. Mas eles ajudam a resolver problemas recorrentes no desenvolvimento de software. Neste caso, onde colocar a lógica de persistência.
sergiotaborda wrote: Não complique o que é simples. Construa os seus repositórios e use o Hibernate diretamente. Vc terá uma camada
e isolamento sem precisar de DAO desde que só use o hibernate dentro dos repositórios.
Acredito que haja um mal-entendido entre o conceito de DAO e Repositório. Recomendo fortemente a leitura do tópico sugerido anteriormente.
|
[],
AC |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/12/2007 09:01:32
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
acdesouza wrote:
sergiotaborda wrote: Você tem os conceitos trocados. DAO não serve para acessar o banco de dados. DAO serve para isolar o banco de dados para que vc posssa substitui-lo mais tarde. Mas vc não quer fazer isso, logo vc não precisa do DAO.
A idéia do Data Access Object não é de isolar, só, o banco de dados, mas qualquer repositório de dados do resto do sistema.
A implementação de uma classe DAO, é a explicação do DataMapper, de Martin Fowler. A idéia é ter uma classe responsável por persistir a entidade de domínio.
sergiotaborda wrote: Vc quer ter camadas , tudo bem. Mas vc não precisa do DAO.
Ninguém precisa de um padrão de projeto/design. Mas eles ajudam a resolver problemas recorrentes no desenvolvimento de software. Neste caso, onde colocar a lógica de persistência.
Isso que vc está dizendo faria sentido se não estivesse sendo usado hibernate e se não tivesse sido declarado que não vão existir mudanças no sistema de persistencia. O sistema de persistencia é o proprio hibernate que é algo muito mais evoluido que um DAO. Portanto, além de ser redundante e redutor o uso do DAO com hibernate e DDD é trabaho duplicado (ou triplicado até).
Enfim, cada caso é um caso, e no caso em epigrafe o DAO não se aplica.
sergiotaborda wrote: Não complique o que é simples. Construa os seus repositórios e use o Hibernate diretamente. Vc terá uma camada
e isolamento sem precisar de DAO desde que só use o hibernate dentro dos repositórios.
Acredito que haja um mal-entendido entre o conceito de DAO e Repositório. Recomendo fortemente a leitura do tópico sugerido anteriormente.
Isso já foi debatido aqui ad nauseum. Quem quiser saber a diferença basta fazer uma busca no GUJ.
O ponto é que dadas as directivas do projeto do colega:
1) Sistema de persistencia baseado no hibernate e sem necessidade de alteração futura e
2) Baseado DDD com o uso de Repositorios
O DAO é redundante , inutil, um empecilho, Enfim, uma má escolha de arquitetura.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/12/2007 16:51:17
|
Pablo_Eteg
JavaBaby
![[Avatar]](/images/avatar/19373781a09c6f246e7d1ac54932745e.jpg)
Membro desde: 10/12/2007 14:42:02
Mensagens: 89
Localização: MG
Offline
|
Cria o seu DAO como uma classe e cria nele um getInstancia
aih vc naum vai precisar da injeção de um objeto eh só
chamar o metodo do objeto getInstancia da classe DAO
que vc criou.
Aih eh soh usar
ContatoDao.getInstancia().saveorUpdate(contato);
|
"Write once, run anywhere!!!" - Java
Pablo Henrique - Desenvolvedor |
|
|
 |
|
|