Boa tarde pessoal,
Sou novo em desenvolvimento e estou fazendo um CRUD simples utlizando jpa e hibernate. O problema é o seguinte, se eu instanciar os objetos, tanto o entityManager quanto a classe que vou persistir, na classe main e executar o método, o código funciona perfeitamente, como no exemplo:
EntityManager entityManager = jpautil.getEntityManagerFactory().createEntityManager();
entityManager.getTransaction().begin();
cliente d = new cliente();
d.setId(2);
d = entityManager.find(cliente.class, d.getId());
entityManager.getTransaction().commit();
entityManager.close();
jpautil.shutdown();
System.out.println();
System.out.println();
System.out.println("Código do cliente: "+ d.getId());
System.out.println("Nome do cliente: "+ d.getNome());
System.out.println("CPF do cliente: "+ d.getCpf());
System.out.println();
System.out.println();
No entanto, eu gostaria de direcionar toda essa parte do entityManager
para uma classe DAO, deixando no main apenas a instancia da classe cliente e criar um método localizaporid dentro da classe cliente, ficando da seguinte forma:
Classe DAO:
public Classe_generica findbyid (Classe_generia.class, int id){
EntityManager entityManager =
jpautil.getEntityManagerFactory().createEntityManager();
entityManager.getTransaction().begin();
Classe_generica cg = new Classe_generica();
cg = entityManager.find(Classe_generica.class, id);
entityManager.getTransaction().commit();
entityManager.close();
jpautil.shutdown();
return cg;
}
Sabendo que criamos o método “localizaporid” dentro da classe cliente e este
chama o método “findbyId” da classe DAO, no main ficaria:
cliente d = new cliente();
d.setId(2);
d = d.localizaporid(cliente.class, cliente.getId());
A grande jogada, é que gostaria de repetir isso para diversas classes utilizando
essa mesma lógica, onde uma classe de fornecedores também teria o método “localizaporid”, chamando findbyid da classe DAO.
Obrigado!