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<T> entityClass;
public AbstractFacade(Class<T> entityClass) {
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<T> findAll() {
CriteriaQuery<T> cq = 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<Cliente> implements 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<Cliente> q = 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<Cliente> list;
public List<Cliente> getList() {
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(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Exito", "datos ingresados"));
} else {
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "dui registrado"));
}
} catch (Exception e) {
e.printStackTrace();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "datos no ingresados"));
}
}
}
No hay comentarios:
Publicar un comentario