Estou com um erro conforme descrito no tópico:
Mas para não disvirtuar o assunto daquele vou perguntar em um novo:
Tenho como fazer esse tratamento de sessões manualmente? Na maneira como descrevi no outro tópico para salvar, excluir e consultar estão ficando todas sessões abertas: nenhuma está sendo fechada…
Para salvar e excluir fiz assim:
this.session.saveOrUpdate(cliente);
this.session.flush();
tx.commit();
this.session.close();
Mas, para consultar estou tendo erro: failed to lazily initialize a collection of role
this.session = HibernateUtil.getSessionFactory(id).openSession();
List<Cliente> lista = this.session.createQuery(sql).list();
this.session.close();
return lista;
Outro detalhe, nesse meu caso abro uma sessão para cada operação.E na documentação do Hibernate tem o seguinte:
“A single Session and a single database transaction implement the processing of a particular request event (for example, a Http request in a web application). Do never use the session-per-operation anti-pattern!”
Essa maneira que estou fazendo então não seria a maneira mais correta.No outro tópico já me foi sugerido o Open Session in View, porém ainda não compreendi direito. (eu posso fazer manualmente?)
Ainda não entendi direito o funcionamento da sessão… como ela é a reaproveitada, entre outras coisas
No caso, esse Open Session in View seria uma maneira de centralizar essas criações das sessões de modo a não duplicar sessões, e sempre garantir que terá uma disponível?