Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package br.com.web2.ew.controladores; import br.com.web2.ew.controladores.exceptions.NonexistentEntityException; import br.com.web2.ew.entidades.Operacao; import java.io.Serializable; import javax.persistence.Query; import javax.persistence.EntityNotFoundException; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import br.com.web2.ew.entidades.Usuario; import br.com.web2.ew.persistencia.filtro.FiltroBuscaOperacao; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; /** * * @author fabyuu */ public class OperacaoJpaController implements Serializable { public OperacaoJpaController(EntityManagerFactory emf) { this.emf = emf; } private EntityManagerFactory emf = null; public EntityManager getEntityManager() { return emf.createEntityManager(); } public void create(Operacao operacao) { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Usuario idUsuario = operacao.getIdUsuario(); if (idUsuario != null) { idUsuario = em.getReference(idUsuario.getClass(), idUsuario.getId()); operacao.setIdUsuario(idUsuario); } em.persist(operacao); if (idUsuario != null) { idUsuario.getOperacaoList().add(operacao); idUsuario = em.merge(idUsuario); } em.getTransaction().commit(); } finally { if (em != null) { em.close(); } } } public void edit(Operacao operacao) throws NonexistentEntityException, Exception { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Operacao persistentOperacao = em.find(Operacao.class, operacao.getIdOperacao()); Usuario idUsuarioOld = persistentOperacao.getIdUsuario(); Usuario idUsuarioNew = operacao.getIdUsuario(); if (idUsuarioNew != null) { idUsuarioNew = em.getReference(idUsuarioNew.getClass(), idUsuarioNew.getId()); operacao.setIdUsuario(idUsuarioNew); } operacao = em.merge(operacao); if (idUsuarioOld != null && !idUsuarioOld.equals(idUsuarioNew)) { idUsuarioOld.getOperacaoList().remove(operacao); idUsuarioOld = em.merge(idUsuarioOld); } if (idUsuarioNew != null && !idUsuarioNew.equals(idUsuarioOld)) { idUsuarioNew.getOperacaoList().add(operacao); idUsuarioNew = em.merge(idUsuarioNew); } em.getTransaction().commit(); } catch (Exception ex) { String msg = ex.getLocalizedMessage(); if (msg == null || msg.length() == 0) { Integer id = operacao.getIdOperacao(); if (findOperacao(id) == null) { throw new NonexistentEntityException("The operacao with id " + id + " no longer exists."); } } throw ex; } finally { if (em != null) { em.close(); } } } public void destroy(Integer id) throws NonexistentEntityException { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Operacao operacao; try { operacao = em.getReference(Operacao.class, id); operacao.getIdOperacao(); } catch (EntityNotFoundException enfe) { throw new NonexistentEntityException("The operacao with id " + id + " no longer exists.", enfe); } Usuario idUsuario = operacao.getIdUsuario(); if (idUsuario != null) { idUsuario.getOperacaoList().remove(operacao); idUsuario = em.merge(idUsuario); } em.remove(operacao); em.getTransaction().commit(); } finally { if (em != null) { em.close(); } } } public List<Operacao> findOperacaoEntities() { return findOperacaoEntities(true, -1, -1); } public List<Operacao> findOperacaoEntities(int maxResults, int firstResult) { return findOperacaoEntities(false, maxResults, firstResult); } private List<Operacao> findOperacaoEntities(boolean all, int maxResults, int firstResult) { EntityManager em = getEntityManager(); try { CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); cq.select(cq.from(Operacao.class)); Query q = em.createQuery(cq); if (!all) { q.setMaxResults(maxResults); q.setFirstResult(firstResult); } return q.getResultList(); } finally { em.close(); } } public List<Operacao> pesquisarOperacao(FiltroBuscaOperacao filtro) { EntityManager em = getEntityManager(); Session s = em.unwrap(Session.class); try { Criteria c = s.createCriteria(Operacao.class, "operacao"); for (Criterion crit : filtro.getAllRestrictions()) { c.add(crit); } c.addOrder(Order.asc("operacao.dataOperacao")); return c.list(); } finally { em.close(); } } public Operacao findOperacao(Integer id) { EntityManager em = getEntityManager(); try { return em.find(Operacao.class, id); } finally { em.close(); } } public int getOperacaoCount() { EntityManager em = getEntityManager(); try { CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); Root<Operacao> rt = cq.from(Operacao.class); cq.select(em.getCriteriaBuilder().count(rt)); Query q = em.createQuery(cq); return ((Long) q.getSingleResult()).intValue(); } finally { em.close(); } } }