Buscar este blog

lunes, 28 de octubre de 2019

crud java usando Abstract facade

package com.banco.utils;

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class JPAUtils {
    private static final String PERSISTENCE_UNIT_NAME = "PROJECT-BANCOPU";
    private static EntityManagerFactory factory;
    
    public static EntityManagerFactory getEntityManagerFactory( ) {
        
        if (factory == null) {
            factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
        }
        
        return factory;
    }
}

ABSTRACT FACADE


import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaQuery;

public abstract class AbstractFacade<T> {

    private Class<TentityClass;

    public AbstractFacade(Class<TentityClass) {
        this.entityClass = entityClass;
    }
    
    protected abstract EntityManager getEntityManager();
    
    public void create(T entity) {
        EntityManager em = getEntityManager();
        
        try {
            em.getTransaction().begin();
            em.persist(entity);
            em.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
            em.getTransaction().rollback();
        } finally {
            em.close();
        }
    }
    
    public List<TfindAll() {
        CriteriaQuery<Tcq = getEntityManager().getCriteriaBuilder().createQuery(entityClass);
        return getEntityManager().createQuery(cq).getResultList();
    }
    
    public T find(Object id) {
        return getEntityManager().find(entityClass, id);
    }
    
    
}


DAO


import java.io.Serializable;

import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;

import com.banco.entity.Cliente;
import com.banco.utils.JPAUtils;

public class ClienteFacade extends AbstractFacade<Clienteimplements Serializable {

    private static final long serialVersionUID = 1L;
    private EntityManager em;

    public ClienteFacade() {
        super(Cliente.class);
        getEntityManager();
    }

    @Override
    protected EntityManager getEntityManager() {

        if (em == null) {
            em = JPAUtils.getEntityManagerFactory().createEntityManager();
        }

        return em;
    }

    public Cliente findByDui(String dui) {
        Cliente c = null;

        try {
            TypedQuery<Clienteq = em.createQuery("SELECT c FROM Cliente c WHERE c.dui LIKE :dui"Cliente.class);
            q.setParameter("dui""%" + dui);

            c = q.getSingleResult();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return c;
    }

}

CONTROLLER

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import com.banco.dao.ClienteFacade;
import com.banco.entity.Cliente;

@ManagedBean
@RequestScoped
public class ClienteController implements Serializable {

    private ClienteFacade cf;
    private Cliente cli;

    public Cliente getCli() {
        return cli;
    }

    public void setCli(Cliente cli) {
        this.cli = cli;
    }

    @PostConstruct
    public void init() {
        cf = new ClienteFacade();
        cli = new Cliente();
    }

    public List<Clientelist;

    public List<ClientegetList() {
        return cf.findAll();
    }

    public void create() {
        FacesContext context = FacesContext.getCurrentInstance();

        try {
            if (cf.findByDui(cli.getDui()) == null) {
                cli.setFechaRegistro(new Date());
                cf.create(cli);
                context.addMessage(nullnew FacesMessage(FacesMessage.SEVERITY_INFO"Exito""datos ingresados"));
            } else {
                context.addMessage(nullnew FacesMessage(FacesMessage.SEVERITY_ERROR"Error""dui registrado"));
            }

        } catch (Exception e) {
            e.printStackTrace();
            context.addMessage(nullnew FacesMessage(FacesMessage.SEVERITY_ERROR"Error""datos no ingresados"));
        }

    }
}

No hay comentarios:

Publicar un comentario