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.
Dúvida.Maneira correta de usar Lazy do hibernate em aplicação web
6 Respostas
Opa pessoal ninguém sabe?
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??
Fala AnjoVingadorMe 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.
acredito que depende da “situação” vc tem algum exemplo que tenha dúvida se utilizar o lazy?
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.
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.