Gostaria de saber por que não criamos um DAO genérico em vez de criar um para cada entidade e se dentro do DAO no método cadstrar já podemos iniciar a transação persistir e comitar em vez de deixar isso para a classe principal, nela ficaria só o closed.
public class Dao {
private EntityManager em;
public Dao(EntityManager em) {
this.em = em;
}
public void cadastrar(Object obj) {
em.getTransaction().begin();
em.persist(obj);
em.getTransaction().commit();
}
}
public class CadastroDeProduto {
public static void main(String[] args) {
EntityManager em = JPAUtil.getEntityManager();
Dao dao = new Dao(em);
Categoria cat1 = new Categoria("teste");
dao.cadastrar(cat1);
Produto prod1 = new Produto();
prod1.setNome("Caneta Bic");
prod1.setDescricao("Caneta azul");
prod1.setPreco(new BigDecimal("800"));
prod1.setCategora(cat1);
dao.cadastrar(prod1);
em.close();
}
}