1
resposta

Por que não criar um DAO genérico?

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


}

}

1 resposta

Oi Manoel

É uma boa prática de OO separar em classes cada uma das entidades. Sobre a transação você pode deixar dentro do cadastrar, mas se precisar fazer outras operações teria que deixar para a classe principal realizar esse controle de quando fazer o commit