| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/07/2004 17:02:44
|
g_labega
Entusiasta Java
![[Avatar]](/images/avatar/c8ae93054116dc33418ae.jpg)
Membro desde: 09/02/2004 08:45:22
Mensagens: 18
Localização: Campinas - SP
Offline
|
Olá pessoal,
Estou estudando o Pattern DAO, vou fazer uma lojinha virtual através dele. No meu banco de dados eu tenho relacionamentos do tipo:
Categoria 1 --- * Produto
Então talvez fosse interessante colocar na classe Categoria, um método mais ou menos assim:
Porem, eu fazendo isso eu tornaria meu objeto de negocio atrelado à parte de acesso a dados, então eu pensei em usar interfaces. Assim onde eu fosse implementar CloudscapeCategoryDAO(*), OracleCategoryDAO(*), eu tb implementaria uma classe Categoria que implementasse a interface que tem os métodos do objeto de negocio categoria (que teria get/set de Nome, Descricao e um getProdutos() ).
O que vcs acham dessa abordagem? Com isso estaria saindo do Pattern DAO? Pois pelos exemplo que vi, não existe a interface, só a classe.
Nota eu não estou usando nenhum framework do tipo Hibernate, pois eu estudando...
Agradeço qq ajuda.
* = nomes tirados do paper: http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/07/2004 22:21:20
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline
|
Existem várias formas de resolver o seu problema.
Teu dao pode carregar de antemão os produtos da categoria, e passar pra ela o List. Isso porêm fica lento se não forem usar esses produtos sempre.
Outra solução é o dao ler somente as PKs, criar 1 List esperto se vira para carregar quando necessario os dados objetos e entregar pro objeto Categoria.
Uma opção ainda é uma variação do modelo acima, onde o relacionamento é lido somente no primeiro uso da coleção.
Ou ainda seu objeto Categoria pode explicitamente chamar o DAO que criou ele para pegar as coleções, pessoalmente acho essa a pior das opções.
Cuidado, fazendo isso vc ta implementando seu próprio mini ORM...
|
http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/07/2004 08:58:50
|
Filipe Sabella
GUJ Expert
Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline
|
Apesar de ter pouca experiência com essa Pattern, usar interfaces para DAOs me parece um ótimo contrato a ser estabelecido.
Mas ... porquê você não usa Hibernate?
|
Former LIPE. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/07/2004 09:52:49
|
fabio.patricio
GUJ Master
Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline
|
Olá,
Acredito que o Hibernate seja uma boa opção. Mas mesmo assim eu prefiro abstrair ele também.
Esta parte de retornar um list de produtos dentro da classe de categoria deve ficar no teu modelo (regra de negocio) e não no DAO, se você colocar no DAO estará quebrando o modelo e deixando um dependente do outro.
]['s
|
Fabio Patricio
http://blog.wansoft.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/07/2004 11:01:28
|
g_labega
Entusiasta Java
![[Avatar]](/images/avatar/c8ae93054116dc33418ae.jpg)
Membro desde: 09/02/2004 08:45:22
Mensagens: 18
Localização: Campinas - SP
Offline
|
Na verdade não estou usando Hibernate, pois só estou estudando o Pattern, depois que finalizar isso vou adaptar para usar o Hibernate, só para estudo mesmo.
louds:
Uma opção ainda é uma variação do modelo acima, onde o relacionamento é lido somente no primeiro uso da coleção.
Vc dizendo fica algo assim:
? Mas ai estaria colocando o DAO no model, não seria um ?anti-pattern??
fabgp2001:
Esta parte de retornar um list de produtos dentro da classe de categoria deve ficar no teu modelo (regra de negocio) e não no DAO, se você colocar no DAO estará quebrando o modelo e deixando um dependente do outro.
Tem como vc colocar um pequeno trecho de código de como ficaria a solução para a abstração do Hibernate?
Nota: acho que vou fazer só usando os XXXDAO, na classe ProdutoDAO coloco um metodo do tipo getProdutoByCategory(int id). Pelos que estou vendo, é dificil alguem fazer isso.
Obrigado pelas dicas pessoal.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/07/2004 12:42:45
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline
|
g_labega, pelo contrario, eu estava sugerindo formar de exatamente evitar isso!
|
http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda |
|
|
 |
|
|