Como assim “não consigo retornar pois a sessão já está fechada”? Se você buscar o objeto e depois fechar a sessão não tem problema!
Você só terá problema com isso se utilizar algum métod LAZY. Por exemplo, chamar uma collection como [B]curso.getAlunos()[/B]. Isso iria gerar uma LazyInitializationException pois a sessão está fechada.
Ajuda o pessoal a entender o seu problema colocando mais informações!
Por exemplo, se for uma aplicação WEB, dá uma olhada no conceito de Open Session in View.
prog.tiago
Obrigado Guilherme,
De fato estou usando um método Lazy como você disse.
Estou desenvolvendo uma aplicação WEB utilizando Flex como Front End e Hibernate para persistência.
Acho que a forma como estou tratanto as Sessions no Hibernate estão meio que erradas. Veja como estão:
Primeiro, sua classe criadora de conexões… A SessionFactory deveria ser criada apenas uma vez. E depois você usa ela pra gerar as Sessions.
Com isso, você inicia a SessionFactory quando a aplicação subir (ou lazy) e derruba ela no final (se tiver sido aberta).
Outra coisa é que você está pegando a Session nos construtores dos DAOs e fechando nos métodos, então, o que acontece se eu quiser executar um código como o abaixo?
CursoDAO cdao = new CursoDAO();
Curso curso = cdao.get(1L);
cdao.delete(curso);
Não posso fazer isso! Pois o construtor vai abrir a sessão, o método get() vai fecha-la e inutilizar todo o objeto DAO. Quando chegar no delete(), você teria uma exceção em mãos para tratar.
No próprio site do Hibernate existem vários códigos exemplo, ou aqui mesmo no GUJ pra te ajudar com isso.