javasf@googlegroups.com
[Top] [All Lists]

[javasf] Re: Projeto muito lento

Subject: [javasf] Re: Projeto muito lento
From: Lindoélio Lázaro
Date: Thu, 21 Jul 2011 11:17:48 -0700 PDT
Brother, tive esse mesmo problema quando definia minha primeira
arquitetura JSF com Hibernate.
Você está criando uma entityManagerFactory toda vez que solicita a
sessão, enquanto deveria estar guardando a entityManagerFactory para
utilizá-la nas próximas requisições. Para isso, criei uma classe
estática para obter a instância do entityManagerFactory, criando-a se
elar for nula (ou seja, na primeira utilização) e guardando-a como uma
instância estática, fazendo apenas um getEntityManagerFactory() quando
precisar de uma nova requisição no banco. Não sei se essa é a melhor
opção, até porque não gosto muito de métodos estáticos quando penso em
uso de memória, mas funcionou perfeitamente para mim.
Estou no trabalho agora e não tenho meu código aqui, mas à noite posto
meu código para exemplificar melhor.

Att,

On Jul 21, 2:59 pm, NataNael Castro <natanaelcastro.2...@xxxxxxxxx>
wrote:
> JPAUtil
>
> package br.embrapa.cpafac.rmfa.util;
>
> import javax.persistence.EntityManager;
> import javax.persistence.EntityManagerFactory;
> import javax.persistence.Persistence;
>
> public class JPAUtil {
>         public EntityManager getSession(String persistenceUnit){
>                 EntityManagerFactory emf =
> Persistence.createEntityManagerFactory(persistenceUnit);
>                 return emf.createEntityManager();
>         }
>
> }
>
> SuperDAO
> package br.embrapa.cpafac.rmfa.dao;
>
> import java.io.Serializable;
> import java.util.List;
> import javax.persistence.EntityManager;
> import org.hibernate.Query;
> import org.hibernate.Session;
> import br.embrapa.cpafac.rmfa.util.JPAUtil;
>
> public class SuperDAO extends JPAUtil{
>         public EntityManager getSession(){
>                 return this.getSession("ProjRmfa");
>         }
>
>         public void adicionar(Serializable obj){
>                 EntityManager se = getSession();
>                 se.getTransaction().begin();
>                 se.persist(obj);
>                 se.getTransaction().commit();
>                 se.close();
>         }
>
>         public void adicionarAtualizar(Serializable obj){
>                 Session se = (Session)getSession().getDelegate();
>                 se.getTransaction().begin();
>                 se.saveOrUpdate(se.merge(obj));
>                 se.getTransaction().commit();
>                 se.close();
>         }
>
>         public void atualizar(Serializable obj){
>                 EntityManager se = getSession();
>                 se.getTransaction().begin();
>                 se.merge(obj);
>                 se.getTransaction().commit();
>                 se.close();
>         }
>
>         public void remover(Serializable obj){
>                 EntityManager se = getSession();
>                 se.getTransaction().begin();
>                 se.remove(se.merge(obj));
>                 se.getTransaction().commit();
>                 se.close();
>         }
>
>         @SuppressWarnings("unchecked")
>         public <R extends Serializable> R getObjeto(Class<R> classe, Integer
> chave){
>                 EntityManager se = getSession();
>                 se.getTransaction().begin();
>                 Serializable retorno = se.find(classe, chave);
>                 se.getTransaction().commit();
>                 se.close();
>                 return (R) retorno;
>         }
>
>         @SuppressWarnings("unchecked")
>         public <R extends Serializable> R getObjeto(Class<R> classe, short
> chave){
>                 EntityManager se = getSession();
>                 se.getTransaction().begin();
>                 Serializable retorno = se.find(classe, chave);
>                 se.getTransaction().commit();
>                 se.close();
>                 return (R) retorno;
>         }
>
>         @SuppressWarnings("unchecked")
>         public <L extends Serializable> List<L> getListaObjeto(Class<L>
> classe){
>                 Session se = (Session)getSession().getDelegate();
>                 List<L> retorno = se.createCriteria(classe).list();
>                 se.close();
>                 return retorno;
>         }
>
>         @SuppressWarnings("unchecked")
>         public <L extends Serializable> List<L> getListaObjeto(Class<L>
> classe, String str, Object...objects){
>                 Session se = (Session)getSession().getDelegate();
>                 Query qr = se.createQuery(str);
>                 for(int i = 1; i <= objects.length; i++)
>                         qr.setParameter(i, objects[i-1]);
>                 List<L> retorno = qr.list();
>                 se.close();
>                 return retorno;
>         }
>
> }
>
> RmfaTbEquipamentoInstituicaoDAO (uma classe DAO para exemplo)
> package br.embrapa.cpafac.rmfa.dao;
>
> import java.util.List;
> import javax.faces.context.ExternalContext;
> import javax.faces.context.FacesContext;
> import javax.servlet.http.HttpSession;
> import org.hibernate.Criteria;
> import org.hibernate.Session;
> import org.hibernate.criterion.Order;
> import org.hibernate.criterion.Restrictions;
> import br.embrapa.cpafac.rmfa.pojo.Pessoa;
> import br.embrapa.cpafac.rmfa.pojo.RmfaTbEquipamentoInstituicao;
> import br.embrapa.sgs.model.plus.UsuarioSistema;
>
> public class RmfaTbEquipamentoInstituicaoDAO extends SuperDAO{
>         public void Cadastrar(RmfaTbEquipamentoInstituicao obj){
>                 adicionar(obj);
>         }
>         public void Atualizar(RmfaTbEquipamentoInstituicao obj){
>                 atualizar(obj);
>         }
>         public void Deletar(RmfaTbEquipamentoInstituicao obj){
>                 remover(obj);
>         }
>         public void CadastrarAtualizar(RmfaTbEquipamentoInstituicao obj){
>                 ExternalContext ex =
> FacesContext.getCurrentInstance().getExternalContext();
>                 HttpSession se = (HttpSession) ex.getSession(true);
>                 UsuarioSistema usuarioLogado = (UsuarioSistema)
> se.getAttribute("nomeSessao");
>
>                 Pessoa p = new Pessoa();
>                 PessoaDAO pDAO = new PessoaDAO();
>                 p = pDAO.get(usuarioLogado.getIdUsuario());
>
> obj.setRmfaTbInstituicao(p.getPessoaJuridica().getRmfaTbInstituicao());
>
>                 adicionarAtualizar(obj);
>         }
>
>         public RmfaTbEquipamentoInstituicao get(Integer id){
>                 return getObjeto(RmfaTbEquipamentoInstituicao.class, id);
>         }
>         @SuppressWarnings("unchecked")
>         public List<RmfaTbEquipamentoInstituicao> getLista(){
>                 ExternalContext ex =
> FacesContext.getCurrentInstance().getExternalContext();
>                 HttpSession hs = (HttpSession) ex.getSession(true);
>                 UsuarioSistema usuarioLogado = (UsuarioSistema)
> hs.getAttribute("nomeSessao");
>
>                 Pessoa p = new Pessoa();
>                 PessoaDAO pDAO = new PessoaDAO();
>                 p = pDAO.get(usuarioLogado.getIdUsuario());
>
>                 Session se = (Session)getSession().getDelegate();
>                 Criteria c = 
> se.createCriteria(RmfaTbEquipamentoInstituicao.class);
>                 c.add(Restrictions.eq("rmfaTbInstituicao",
> p.getPessoaJuridica().getRmfaTbInstituicao()));
>                 c.addOrder(Order.asc("nmEquipamentoInstituicao"));
>                 List<RmfaTbEquipamentoInstituicao> lista = c.list();
>
>                 return lista;
>         }
>
> }
>
> RmfaTbEquipamentoInstituicaoFACE (uma classe da minha camada de
> controle para exemplo, essa classe é o controle do DAO acima)
> package br.embrapa.cpafac.rmfa.face;
>
> import java.util.List;
> import org.hibernate.HibernateException;
> import org.hibernate.exception.ConstraintViolationException;
> import br.embrapa.cpafac.logerro.xml.LogErroXML;
> import br.embrapa.cpafac.rmfa.pojo.RmfaTbEquipamentoInstituicao;
> import br.embrapa.cpafac.rmfa.util.MensagensUtil;
> import br.embrapa.cpafac.rmfa.util.UsuarioLogado;
> import br.embrapa.cpafac.rmfa.dao.RmfaTbEquipamentoInstituicaoDAO;
>
> public class RmfaTbEquipamentoInstituicaoFACE{
>         RmfaTbEquipamentoInstituicao rmfaTbEquipamentoInstituicao = new
> RmfaTbEquipamentoInstituicao();
>         List<RmfaTbEquipamentoInstituicao> listaRmfaTbEquipamentoInstituicao;
>         RmfaTbEquipamentoInstituicaoDAO rmfaTbEquipamentoInstituicaoDAO = new
> RmfaTbEquipamentoInstituicaoDAO();
>         UsuarioLogado usuarioLogado = new UsuarioLogado();
>
>         public void
> setRmfaTbEquipamentoInstituicao(RmfaTbEquipamentoInstituicao
> rmfaTbEquipamentoInstituicao){
>                 this.rmfaTbEquipamentoInstituicao = 
> rmfaTbEquipamentoInstituicao;
>         }
>         public RmfaTbEquipamentoInstituicao getrmfaTbEquipamentoInstituicao()
> {
>                 return rmfaTbEquipamentoInstituicao;
>         }
>
>         public List<RmfaTbEquipamentoInstituicao>
> getListaRmfaTbEquipamentoInstituicao(){
>                 if(listaRmfaTbEquipamentoInstituicao == null)
>                         listaRmfaTbEquipamentoInstituicao =
> rmfaTbEquipamentoInstituicaoDAO.getLista();
>
>                 return listaRmfaTbEquipamentoInstituicao;
>         }
>
>         public void CadastrarAtualizar(){
>                 MensagensUtil msgUtil = new MensagensUtil();
>                 try{
>                         listaRmfaTbEquipamentoInstituicao = null;
>
> rmfaTbEquipamentoInstituicaoDAO.CadastrarAtualizar(rmfaTbEquipamentoInstitu 
> icao);
>                         msgUtil.sucessoAjax("CADASTRAR_SUCESSO");
>
>                         rmfaTbEquipamentoInstituicao = new 
> RmfaTbEquipamentoInstituicao();
>                 }catch(ConstraintViolationException e){
>                         LogErroXML log = new LogErroXML();
>                         log.cadastraErroXML("RMFA",
> ""+usuarioLogado.getUsuarioLogado().getIdUsuario(),
> "RmfaTbEquipamentoInstituicaoFACE.class", "CadastrarAtualizar()",
> msgUtil.falhaAjax("CADASTRAR_ERRO_TAB_PANEL"), e.getCause(),
> e.getMessage(), e.getStackTrace());
>                 }catch(HibernateException e){
>                         LogErroXML log = new LogErroXML();
>                         log.cadastraErroXML("RMFA",
> ""+usuarioLogado.getUsuarioLogado().getIdUsuario(),
> "RmfaTbEquipamentoInstituicaoFACE.class", "CadastrarAtualizar()",
> msgUtil.falhaAjax("CADASTRAR_ERRO_TAB_PANEL"), e.getCause(),
> e.getMessage(), e.getStackTrace());
>                 }catch(NullPointerException e){
>                         LogErroXML log = new LogErroXML();
>                         log.cadastraErroXML("RMFA",
> ""+usuarioLogado.getUsuarioLogado().getIdUsuario(),
> "RmfaTbEquipamentoInstituicaoFACE.class", "CadastrarAtualizar()",
> msgUtil.falhaAjax("CADASTRAR_ERRO_TAB_PANEL"), e.getCause(),
> e.getMessage(), e.getStackTrace());
>                 }catch(Exception e){
>                         LogErroXML log = new LogErroXML();
>                         log.cadastraErroXML("RMFA",
> ""+usuarioLogado.getUsuarioLogado().getIdUsuario(),
> "RmfaTbEquipamentoInstituicaoFACE.class", "CadastrarAtualizar()",
> msgUtil.falhaAjax("CADASTRAR_ERRO_TAB_PANEL"), e.getCause(),
> e.getMessage(), e.getStackTrace());
>                 }
>         }
>
>         public String Deletar(){
>                 MensagensUtil msgUtil = new MensagensUtil();
>                 try{
>                         listaRmfaTbEquipamentoInstituicao = null;
>                         RmfaTbEquipamentoInstituicao obj = 
> rmfaTbEquipamentoInstituicao;
>                         rmfaTbEquipamentoInstituicao = new 
> RmfaTbEquipamentoInstituicao();
>
>                         rmfaTbEquipamentoInstituicaoDAO.Deletar(obj);
>
>                         msgUtil.sucessoAjax("DELETAR_SUCESSO");
>                 }catch(ConstraintViolationException e){
>                         LogErroXML log = new LogErroXML();
>                         log.cadastraErroXML("RMFA",
> ""+usuarioLogado.getUsuarioLogado().getIdUsuario(),
> "RmfaTbEquipamentoInstituicaoFACE.class", "Deletar()",
> msgUtil.falhaAjax("DELETAR_EQUIPAMENTO_ERRO"), e.getCause(),
> e.getMessage(), e.getStackTrace());
>                 }catch(HibernateException e){
>                         LogErroXML log = new LogErroXML();
>                         log.cadastraErroXML("RMFA",
> ""+usuarioLogado.getUsuarioLogado().getIdUsuario(),
> "RmfaTbEquipamentoInstituicaoFACE.class", "Deletar()",
> msgUtil.falhaAjax("DELETAR_EQUIPAMENTO_ERRO"), e.getCause(),
> e.getMessage(), e.getStackTrace());
>                 }catch(NullPointerException e){
>                         LogErroXML log = new LogErroXML();
>                         log.cadastraErroXML("RMFA",
> ""+usuarioLogado.getUsuarioLogado().getIdUsuario(),
> "RmfaTbEquipamentoInstituicaoFACE.class", "Deletar()",
> msgUtil.falhaAjax("DELETAR_EQUIPAMENTO_ERRO"), e.getCause(),
> e.getMessage(), e.getStackTrace());
>                 }catch(Exception e){
>                         LogErroXML log = new LogErroXML();
>                         log.cadastraErroXML("RMFA",
> ""+usuarioLogado.getUsuarioLogado().getIdUsuario(),
> "RmfaTbEquipamentoInstituicaoFACE.class", "Deletar()",
> msgUtil.falhaAjax("DELETAR_EQUIPAMENTO_ERRO"), e.getCause(),
> e.getMessage(), e.getStackTrace());
>                 }
>                 return "";
>         }
>
>         public String limparEquipamento(){...
>
> read more »

-- 
Você recebeu esta mensagem por que é membro do  Javasf
http://groups.google.com/group/javasf

Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

<Prev in Thread] Current Thread [Next in Thread>