Jpa + jsf

1 resposta
juniorsatanas

Pessoal estou dando manutenção em um sistema feito em JSF + JPA, gostaria de saber se não é possível deixar esta classe mais legível :
preciso fazer 5 linhas de código exemplo:
tipo:

EntityManager em = JPAUtil.getInstance().getEntityManager();
carg = em.getReference(Cargo.class, carg.getId());
em.remove(carg);
em.getTransaction().commit();
em.close();

por este :

public int addCadEquipamentoDAO (CadastrarEquipamento cade){ saveOrUpadatePojo(cade); System.out.println("SALVOU"); return cade.getCodigoequipamento(); }

package br.manutec.dao;

import br.manutec.entities.Cargo;
import br.manutec.util.JPAUtil;
import java.util.List;
//import javax.faces.context.FacesContext;
import javax.persistence.Query;
import javax.persistence.EntityManager;

public class CargoDAO {

    private static final long serialVersionUID = 1L;

    public String inserirCargo(Cargo carg) {
        EntityManager em = JPAUtil.getInstance().getEntityManager();
        em.persist(carg);
        em.getTransaction().commit();
        em.close();
        return null;
    }

    public Cargo retornarCargo(int idCargo) {
        return JPAUtil.getInstance().getEntity(Cargo.class, idCargo);
    }

    public Cargo retornarCargo(String descricao) {
        EntityManager em = JPAUtil.getInstance().getEntityManager();
        Query qr = em.createQuery("select carg from Cargo carg where carg.descricao = ?1");
        qr.setParameter(1, descricao);
        Cargo toReturn = (Cargo) qr.getSingleResult();
        em.getTransaction().commit();
        em.close();
        return toReturn;
    }

    public void removerCargo(Cargo carg) {
        EntityManager em = JPAUtil.getInstance().getEntityManager();
        carg = em.getReference(Cargo.class, carg.getId());
        em.remove(carg);
        em.getTransaction().commit();
        em.close();
    }

    public void removerCargoPorId(int idCargo) {
        EntityManager em = JPAUtil.getInstance().getEntityManager();
        em.remove(em.find(Cargo.class, idCargo));
        em.getTransaction().commit();
        em.close();
    }

    public void atualizarCargo(Cargo carg) {
        EntityManager em = JPAUtil.getInstance().getEntityManager();
        em.merge(carg);
        em.getTransaction().commit();
        em.close();
    }

    public List<Cargo> listarTodosCargos() {
        return JPAUtil.getInstance().getList(Cargo.class, "select carg from Cargo carg");

    }

    public List<Cargo> listarCargoPorNome(Cargo carg) {
        return JPAUtil.getInstance()
                .getList(Cargo.class, "select carg from Cargo carg where carg.descricao like '%" + carg.getDescricao() + "%'");
    }

    public Boolean existeCargo(String descricao) {
        Boolean existe = true;
        EntityManager em = JPAUtil.getInstance().getEntityManager();
        Query qr = em.createQuery("select carg from Cargo carg where carg.descricao = ?1");
        qr.setParameter(1, descricao);
        if (qr.getResultList().isEmpty()) {
            existe = false;
        }
        em.getTransaction().commit();
        em.close();
        return existe;
    }
}

1 Resposta

Tiburcio_Mancha

Não sei sua disponibilidade de tempo, mas e se vc utilizar o Spring com o JPA e o JSF. Ae vc deixa ele injetar o EntityManager e gerenciar as transações, e cria um DAO Generico com os métodos de CRUD e os selects mais simples!

Vai ficar bem mais limpo seu código!

Criado 22 de dezembro de 2010
Ultima resposta 22 de dez. de 2010
Respostas 1
Participantes 2