Deixar sessão aberta ou fechar após select?

Estava pensando no q poderia ser mais interessante.
Fechar a sessão do hibernate após uma busca (criteria.list()) ou deixar ?

Fechando, eu preciso fazer algo para evitar o LazyInitializationException.
Deixando aberta eu consigo q o hibernate faça select por demanda conforme ele necessitar para mostrar na tela, para os atributos lazy.

E ai ? Oq é mais interessante ?

Olá, de uma olhoda nesses 2 links:
https://community.jboss.org/wiki/OpenSessionInView
http://blog.camilolopes.com.br/opensessionviewsolucao/

pode ser a solução que você procura.
Abraço

Oi diogo.dias

Na verdade a solução pro LazyInitializationException eu já sei.
Oq eu estou qrendo mesmo é a opinião do pessoal sobre oq seria melhor, ou seja, melhor performance.

Caso eu tenha uma lista, por exemplo, tenho tres opções:
1 - carregar os objetos dessa lista antes de fechar a sessão e depois fecha-la
2 - deixar a sessão aberta e deixar o hibernate carregar os objetos conforme forem apresentados na tela (por demanda)
3 - fechar a sessão e depois utilizar a solução do OpenSessionInView para carregar os objetos

A solução eu sei utilizar, gostaria de saber qual vcs acham a melhor opção.

Entendi.
Bom, na minha opinião, depende da quantidade de registros que você vai carregar do banco. Por padrão, para relacionamentos *toMany o hibernate carrega sob demanda(Lazy), ou seja, somente se você usar os objetos da lista. Dependendo com o que você está relacionando, por exemplo, um cliente pode ter 0 ou vários telefones, dificilmente um cliente terá mais de 5 telefones. Para esse cenário, você pode deixar o padrão do hibernate que é carregar sob demanda, mas se for uma lista maior, de pagamentos por exemplo, você dizer por hibernate assim que carregar o cliente, carregar seus pagamentos também, esse é o Eager. Com uma consulta só você carrega o cliente e seus pagamentos. É menos custoso que ficar dando um select para cada pagamento, como o lazy faz. Isso se você tiver certeza que sempre que carregar o cliente você irá usar a sua lista de pagamentos, senão é desperdício de recurso.

Mas como eu disse no começo, isso é somente a minha opinião.

Nesse livro tem dicas interessantes sobre isso e outras otimizações relacionadas ao hibernate: http://www.casadocodigo.com.br/products/livro-jsf-jpa , vale a pena dar uma lida.

Abraço