Criar Uma Classe Generia Para as Operações de CRUD

3 respostas
D
E possivel criar uma classe generica para as 4 operações usando a JPA?? Eu tentei e não deu certo. A classe ficou assim:
EntityManagerFactory emf=Persistence.createEntityManagerFactory("SisorPU");
    EntityManager em=emf.createEntityManager();
    
    
    public void salvar(T obj){
        em.getTransaction().begin();
        em.persist(obj);
     }
    public void remover(T obj){
        em.getTransaction().begin();
        em.remove(obj);
     }
  public T encontrar(T obj){
      
     return em.find(T.class,obj);
        
  }
Porém o netbeans reclama de erro neste ultimo metodo. Desde já agradeço.

3 Respostas

faelcavalcanti

seria um erro de compilação. verifique a assinatura de sua classe bem como do tipo genérico declarado, provavelmente ele não detem deste suporte.
alguns topicos no guj que poderão te ajudar a desenvolver este DAO generico

http://www.guj.com.br/posts/list/54616.java
http://www.guj.com.br/posts/list/102135.java#553592

outra coisa seria, você tentar buscar uso de anotações para efetuar a injeção de dependência do seu entityManager a ser declarado na classe que o utilizar.

D

No caso eu só teria colocar o @PersistContext??
Outra duvida que estou é em qual classe colocar
o resultado de uma query que pega campos de diversas
classes.
Muito obrigado pelo links eu sinceramente não tinha pesquisado antes.

faelcavalcanti

Daniel.F:
Outra duvida que estou é em qual classe colocar
o resultado de uma query que pega campos de diversas
classes.

na classe que você implementar as chamadas em JPQL, ou seja, sua classe de DAO.

algumas referêncas mais sobre como implementar este DAO:

http://www.codefutures.com/java-dao/
http://www.guj.com.br/posts/list/66925.java
http://java.sun.com/blueprints/patterns/DAO.html
http://www.ibm.com/developerworks/java/library/j-dao/
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
http://www.urubatan.com.br/dao-generico-um-exemplo-a-pedidos/

Criado 14 de setembro de 2008
Ultima resposta 15 de set. de 2008
Respostas 3
Participantes 2