Dúvida.Maneira correta de usar Lazy do hibernate em aplicação web

6 respostas
AnjoVingador

Bom pessoal estou com uma dúvida sobre a maneira correta de se usar “lazy” em aplicação web.
Pois se abrimos de fechamos a sessão no momento de alguma consulta, o lazy fica meio que sem utilidade.
Minha dúvida é, como o pessoal mais experiente faz o uso do lazy de maneira correta?
Eu atualmente testei a solução deste link click aqui e me parece está funcionando como deveria com alguns pequenos ajustes.
Desde já agradeço.

6 Respostas

AnjoVingador

Opa pessoal ninguém sabe?

M

Fala AnjoVingador

Me diga uma coisa, esse lazy em aplicações web que você diz seria quando vc faz uma consulta com vários objetos populados e quando vc muda de página ou aperta algum botão eles perdem os valores???

Ou é outra coisa??

AnjoVingador

magni:
Fala AnjoVingador

Me diga uma coisa, esse lazy em aplicações web que você diz seria quando vc faz uma consulta com vários objetos populados e quando vc muda de página ou aperta algum botão eles perdem os valores???

Ou é outra coisa??


Verdade é quase isso.
Mas eu to falando do lazy do hibernate que só te traz os dados de uma coleção relacionada com um objeto se a coleção for realmente acessada.Assim evitando trazer dados que poderiam nem ser usados.
Bom é isso.
No esquema de fechar a sessão toda vez que fizer um consulta o lazy acaba não tendo utilidade e isso pode gerar um uso de memória desnecessário.

rafaduka

acredito que depende da “situação” vc tem algum exemplo que tenha dúvida se utilizar o lazy?

AnjoVingador

A sim vamos lá, por exemplo eu tenho uma tela que precise somente do objeto pai que contém uma coleção de muitos registros.
Eu não quero a coleção em um dado momento, mas posso precisar dela nesta mesmo tela.
Se eu fechar a sessão depois da consulta e tentar usar a coleção depois receberei uma exceção.A não ser que deixe a sessão aberta, mas tb não quero deixar a sessão toda vida aberta.
O link que passei no primeiro post propõem uma solução mas do jeito que está lá não me serviu sem fazer alguns ajustes.

AnjoVingador

Bom pessoal o link postado no 1º post, mesmo com ajustes não me serviu, pois caí no problema da sessão ficar aberta e software não enxergar as mudanças feitas no banco por outra aplicação ou diretamente.
Tentei o session.clear() aparentemente tinha resolvido mas apresentou erro também.
Eu iria usar a anotação @PreDestroy mas ela não funciona com @ViewScoped e isso me quebrou um pouco.
Vou tentar outra solução e posto pra vcs verem.

Criado 3 de janeiro de 2012
Ultima resposta 6 de jan. de 2012
Respostas 6
Participantes 3