Olá amigos do GUJ, passei a usar o Hbernate recentemente , antes eu usava jdbc e um Dao para cada classe herdando sempre de um DaoGenérico, agora com Hibernate eu pergunto a vocês vale a pena ter um DaoGenérico, há bastante tempo fico desconfortável com a idéia de herdar de um DaoGenerico, o que vocês pensam sobre isso. Afinal o Hibernate me dá um CRUD fácil, não estou falando que não há necessidade uma camada de operações com dados.
Criação de um DaoGenerico com Hibernate realmente é viável?
5 Respostas
Pergunta simples: Quanto tempo você leva para fazer toda a estrutura de persistência de um sistema com 10 classes a serem persistidas, usando jdbc e construindo as queries na mão (insert, select, update, delete)?
Agora, para o mesmo sistema, quanto tempo leva, utilizando os conceitos de OO e um framework ORM (não precisa ser hibernate, pode ser Eclipse ou TopLink), com dao genérico? 5%, 10% do tempo que faria com jdbc?
Performance, bem isso é outro detalhe. Customizar query com FW ORM é meio chatinho.
Desconfortável? extends ou implements são recursos de OO, presentes no java. Não pense procedural, pense em objetos.
Detalhe, estamos falando em generalidade, não em totalidade.
Posso ter lá minhas 5 classes em que os métodos saveOrUpdate, delete, get/load (do hibernate, nada impede o uso de elementos da JPA) e uma simples criteria/hql resolvem para inserir/atualizar, deletar, encontrar um ou todos, porém, como se trata de algo genérico, pode ser necessário customizar uma ou outra query para adaptar-se às regras do projeto.
Mas não há por que se sentir envergonhado, JPA é uma realidade.
Nesse post na (página 03) mostra um modelo de DAO genérico Aplicação Web Completa JSF EJB JPA JAAS.
Você poderá ter algumas ações básicas mas sempre irão existir métodos específicos. Mas só das ações básicas já estarem em um lugar seguro, isso irá matar a pau e dar agilidade.
Não tem como escapar.
realmente Hibernate poupa tempo, principalmente com inserts e outros sql, mapeamento e outros recursos bem interessantes, permite concentra nas regras de negócio e gastar menos tempo com instruções sql.
voces conhecem uma boa referencia sobre o hibernate?
O link que o jakefrog mandou é bom.
A documentação também e, os tutoriais do mkyong, embora misturem coisas demais (maven, por exemplo) em coisas simples, são bem bacanas.
A documentação atual está desatualizada para a versão 4, então sugiro a versão 3.6.9, estável e bem legal.