Seja bem vindo ao Fórum do JavaFree.org
Aqui você irá encontrar respostas para TUDO o que você precisa sobre java.
Deseja participar? Crie sua conta ou efetue seu login
Estou iniciando o desenvolvimento de uma página WEB, e estou com a seguinte dúvida:
No meu projeto será utilizado Hibernate/JPA com anotações, devo criar para cada classe a ser persistida uma classe equivalente DAO, ou usar uma interface para implementá-la na classe de negócio mesmo, qual seria a implementação mais correta?
Particularmente prefiro criar uma classe DAO para cada classe Bean, pois assim consigo enchegar de maneira mais clara os respectivos metodos de acesso ah banco de cada classe e de cada tabela e também acho melhor de dar manutenção, a não ser que vc esteja falado dos metodos comum(CRUD) ai vc implementa uma classe HibernateGenericDAO para persistir os metodos comuns sem se importar com o objeto passado por parametro, isso sim eu acho indispensável, de qualquer forma em minha opnião vc terá de usar uma interface para se comunicar com as DAOs. assim seu projeto será melhor estrurado acessando os metodos de uma interface ao invés diretamente das classe DAOs.
MINHA opinião: interface só por interface, não use. Se só vai existir um implementação, qual a utilidade dela? No caso de DAOs, nem a desculpa de separar lógica de negócio da de persistência rola, já que vc está tentando separar a lógica do DAO da sua cara, o que eu acho estúpido. Aliás, não pense em separar DEMAIS a lógica de negócio da de persistência. Sempre achei interessante criar o teu domínio, e toda uma hierarquia para a persistência, mas ultimamente, to começando a achar isso estúpido. Ainda não tenho uma opinião formada sobre o que seria a melhor opção, mas estou tentando fugir desse vício.
Eu acho melhor. Pois eu tenho ao invés de só excluir, alterar, incluir mais umas 100, a manutenção fica mais fácil. _________________System.out.println("Java na cabeça =D");
Olhei este tópico e tenho que descordar de umas coisas!!
Alguém me corri[j|g]a se eu estiver errado, mas interface é usada para abstrair algo!! Se você usar da forma como fez, não terá funcionalidade nenhuma!!!
Qual o objetivo dessa interface?? Você não vai dar comportamento com polimorfismo, ainda mais se usar Hibernate!! Não sei se estou com absoluta razão, mas creio que essa interface não terá utilidades muito significativas para o projeto como um todo :s
Só minha opinião! _________________William Antônio Siqueira Siga-me no Twitter - Tudo sobre JavaFX e um pouco mais
Veja meu Blog Aprendendo JavaFX
Entendo, como em C++, onde você pode declarar os métodos e depois implementar... _________________William Antônio Siqueira Siga-me no Twitter - Tudo sobre JavaFX e um pouco mais
Veja meu Blog Aprendendo JavaFX
Agora ficou interessante opinar. Vamos as boas práticas de utilização de classes e interfaces génericas para reutilizações. Pois Dapcapix ou seu exemplo estah muito amarrado e procure encarar isso como uma crítica construtiva e nao para te "queimar". Veja o exemplo abaixo(Usando auxilio do Hibernate e injeção do Spring e também uma breve visão de tipagem e polimorfismo).
Viu tranquilo neh? assim vc nao precisa se preocupar em salvar apenas um objeto especifico(amarrado)e nem ficar criando os metodos CRUD em todas suas classes DAOs basta extender essa classe ou usar uma anotação que te possa facilitar isso para injetar os metodos sem precisar instanciar as classes, pode ser injetado nas classes impls comuns as suas classes especificas de persistencia. claudioed tai o exemplo da qual eu falava no meu primeiro post deste tópico, acredito que irá ajudar a clarear suas idéias.
Ficou super interessante!!!
Mas no entanto, a sua interface DAO é muito poderosa, pois você não generaliza um tipo de dado! Você utiliza Object! E o DAO não é de um tipo especifico,
Super punk e poderoso seu código, pode ter certeza que quem ver este tópico irá aprender muito!!
Mas no caso do nosso amigo:
Ele deixa o DAO voltado para usuário! você não pode aplicar aquela "mágica" que o eBarros fez no código dele!! Então, acho que não terá muita funcionalidade!
Realmente, este tópico acabou indo para os favoritos! _________________William Antônio Siqueira Siga-me no Twitter - Tudo sobre JavaFX e um pouco mais
Veja meu Blog Aprendendo JavaFX
Obrigado eBarros...vou utilizar essa interface....e criar uma classe que so utilizo os metodos passando objetos a ele....do tipo
ComumDAO.save(qualquerObjeto)....agora em relação ao SPRING ainda não tenho muito conhecimento do funcionamento do Framework..mais assim que conseguir implementar Hibernate...irei partir para o Spring
Obrigado,
Claudio de Oliveira _________________Claudio Oliveira
claudioedPosts:4
Boa Noite,
Estou iniciando o desenvolvimento de uma página WEB, e estou com a seguinte dúvida:
No meu projeto será utilizado Hibernate/JPA com anotações, devo criar para cada classe a ser persistida uma classe equivalente DAO, ou usar uma interface para implementá-la na classe de negócio mesmo, qual seria a implementação mais correta?
Obrigado,
_________________Claudio Oliveira
ebarrosPosts:2347
Particularmente prefiro criar uma classe DAO para cada classe Bean, pois assim consigo enchegar de maneira mais clara os respectivos metodos de acesso ah banco de cada classe e de cada tabela e também acho melhor de dar manutenção, a não ser que vc esteja falado dos metodos comum(CRUD) ai vc implementa uma classe HibernateGenericDAO para persistir os metodos comuns sem se importar com o objeto passado por parametro, isso sim eu acho indispensável, de qualquer forma em minha opnião vc terá de usar uma interface para se comunicar com as DAOs. assim seu projeto será melhor estrurado acessando os metodos de uma interface ao invés diretamente das classe DAOs.
claudioedPosts:4
OK Everton muito obrigado,
Não entendi muito bem a questão da interface, pois se eu criar uma classe hibernategeneric..não resolveria meu problema?
Teria como vc me mandar um exemplo se possível
Obrigado
_________________Claudio Oliveira
DapcapixPosts:16
Classe UsuarioDAO.java
E uma classe UsuarioDAOImpl.java
Att, Diego.
_________________System.out.println("Java na cabeça =D");
thaleshcvPosts:82
http://www.rponte.com.br/2009/06/08/no-more-daos/
_________________Não há luz no fim do túnel... apenas o início do escuro...
JavaFree.org
daltoncamargoPosts:8899