|
|
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
|
|