Página Inicial do Fórum > JEE / EJB

Dúvida ao utilizar pattern DAO



Criar novo tópico   Responder tópico


  1. claudioed
    Posts:4


    Comment Arrow

    Publicado em: 24/05/2009 19:52:44

    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



  1. ebarros
    Posts:2364


    Comment Arrow

    Publicado em: 27/05/2009 19:30:23

    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.



  1. claudioed
    Posts:4


    Comment Arrow

    Publicado em: 24/05/2009 19:52:44

    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



  1. Dapcapix
    Posts:16


    Comment Arrow

    Publicado em: 17/06/2009 18:10:08

    Classe UsuarioDAO.java



    E uma classe UsuarioDAOImpl.java



    Att, Diego.
    _________________
    System.out.println("Java na cabeça =D");



  1. thaleshcv
    Posts:82


    Comment Arrow

    Publicado em: 17/06/2009 18:48:28

    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



  1. daltoncamargo
    Posts:8899


    Comment Arrow

    Publicado em: 17/06/2009 18:52:28

    thaleshcv
    http://www.rponte.com.br/2009/06/08/no-more-daos/


    Esse post é muito interessante, concordo em 80% das colocações deste artigo.
    Apenas para complementar a busca de nosso amigo com o padrão DAO:
    http://www.javafree.org/artigo/871452/Introducao-ao-pattern-DAO.html
    _________________
    Sugestão de Livros

    -- --



  1. Lehmann
    Posts:41


    Comment Arrow

    Publicado em: 18/06/2009 12:14:44

    Dapcapix
    Classe UsuarioDAO.java



    ...

    Att, Diego.



    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.



  1. Dapcapix
    Posts:16


    Comment Arrow

    Publicado em: 17/06/2009 18:10:08

    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");



  1. jesuino
    Posts:1953


    Comment Arrow

    Publicado em: 18/06/2009 13:00:43

    E aes!!!


    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
    Aprendendo JavaFX
    Aprendendo JavaEE
    Curta: Aprendendo Java



  1. Dapcapix
    Posts:16


    Comment Arrow

    Publicado em: 17/06/2009 18:10:08

    Eu acredito que fica melhor estruturado.

    Se ele for colocar um listarUsuario() coloca ali e implementa na classe.
    _________________
    System.out.println("Java na cabeça =D");



  1. jesuino
    Posts:1953


    Comment Arrow

    Publicado em: 18/06/2009 13:00:43

    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
    Aprendendo JavaFX
    Aprendendo JavaEE
    Curta: Aprendendo Java



  1. ebarros
    Posts:2364


    Comment Arrow

    Publicado em: 27/05/2009 19:30:23

    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.



  1. jesuino
    Posts:1953


    Comment Arrow

    Publicado em: 18/06/2009 13:00:43

    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
    Aprendendo JavaFX
    Aprendendo JavaEE
    Curta: Aprendendo Java



  1. Dapcapix
    Posts:16


    Comment Arrow

    Publicado em: 17/06/2009 18:10:08

    Tinha que ter me falado isso antes ='(

    ahuauhauhauhauhaauhauhuahuhauhauhaa...

    Entendi. Pra que criar uma interface usuário, empregado, administrador, etc... se eu posso criar uma genérica que implementa tudo?

    Vejamos:

    Se eu tenho usuário e empresa.

    Usuário tem a opção de incluir e edição e a empresa só a opção de incluir. Então só fazer deixar o "edição" da empresa sem implementação na classe?

    Se eu tiver empresa, produto, funcionário, etc... etc...

    Todos iam ter que colocar em suas classes:

    Listar produto...

    listar empresa...

    Etc...

    Mas a sua lista "genérica" resolveu problema.


    Muito bom =D
    _________________
    System.out.println("Java na cabeça =D");



  1. claudioed
    Posts:4


    Comment Arrow

    Publicado em: 24/05/2009 19:52:44

    ok...

    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



  1. Relacionados





Novo tópico   Responder tópico     Índice do forum -> JEE / EJB