Encerrar sessão consulta hibernate

5 respostas
java
R

Bom dia pessoal, estou tendo um problema para encerrar as consultas do hibernate, como o sistema faz varias consultas está travando o mysql, quando faço uma lista eu consigo encerrar a sessão, mas quando é uma consulta com chave estrangeira não funciona segue abaixo os códigos se alguém tiver uma sugestão fico grato.

exemplo da lista

public List listarEstoque() {

Session sessao = null;

try{

sessao = HibernateUtil.getSessionFactory().openSession();

sessao.beginTransaction();

Query consulta = sessao.createQuery(from Estoque where status=ativo order by id desc);

return consulta.list();

} catch (Exception e) {
e.printStackTrace();

  } finally {

      sessao.close();

  }
return null;

}

nesse caso acima está funcionando ok

public Estoque procurarEstoquePorProduto2(Integer produtos) {

Session sessao = HibernateUtil.getSessionFactory().openSession();

sessao.beginTransaction();

Query consulta = sessao.createQuery(from Estoque where produtos=? and status=ativo’”);

consulta.setInteger(0, produtos);

return (Estoque) consulta.uniqueResult();
}

se aplicar o mesmo código para encerrar a sessão ele diz na consulta que a sessão está fechada, lembrando que esse campo produtos é uma chave estrangeira, fiz o mesmo com a consulta sem chave estrangeira e funcionou.

5 Respostas

R

consegui resolver, vou postar a solução para quem tiver o mesmo problema.

Bom a solução foi implementar o pool de conexão no hibernate.cfg.xml

" <property name="hibernate.c3p0.min_size">5</property>
    <property name="hibernate.c3p0.max_size">200</property>
    <property name="hibernate.c3p0.timeout">1800</property>
    <property name="hibernate.c3p0.max_statements">100</property>"
I

Posso ter entendido errado mas no método listarEstoque() , vc chama o sessao.close(), já no procurarEstoquePorProduto2(Integer produtos), não.

R

então quando chama o sessa.close no método ele da um erro que a sessão está fechada

I
if(session != null) session.close();
R

mesmo com a condição persiste o erro

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

Criado 4 de fevereiro de 2016
Ultima resposta 5 de fev. de 2016
Respostas 5
Participantes 2