Open Session in View Hibernate - Uma Breve Discussão

Bom Dia Galera do Guj,

Não sou dos mais experientes em java mas tenho alguma bagagem com o mesmo, e estou com uma dúvida. estou estudando muito hibernate e jsf e me deparei com OSIV(open session in view), achei um recurso interessante e muito produtivo, porem procurando pela net sobre o mesmo me deparei com pessoas defendendo e criticando. Abaixo encontrei esse artigo que chama o OSIV de antipattern
http://blog.frankel.ch/the-opensessioninview-antipattern

o que vocês acham?é certo chamar a técnica de um antipattern?é aconselhado ou não usar esta técnica?

Estou com essa grande dúvida, pois não sei se estudo mais a fundo ou fico mesmo com o conhecimento superficial do mesmo para eventuais sistemas que já ultilizem essa técnica e eu pelo menos tenha noção de como funciona.

Grato aos amigos e fico no aguardo de suas respostas.
Thiago Fernandes da Cunha

alguém?

É um opção e como tudo na vida tem pros e contras…
Vc tem que levantar eles e ver se não comprometer seu projeto…
Existe outras abordagem bem melhores e é claro mais elaboradas.

Veja, Thiago, o ponto de vista do cara é interessante e nao pode ser desprezado.

Eu uso sempre o OpenSessionInView nos meus projetos e mesmo assim nos HQLs uso os fetchs. O que o OpenSessionInView faz eh abrir a conexao na criacao do request e fecha-la depois do response. Assim voce nao corre o risco de tomar um lazyloadingException ou session is closed na cara.

Conceitualmente nao chega a ser uma antiPattern nao, na minha opiniao, porque a ideia do Hibernate eh deixar transparente para a aplicacao o uso do modelo relacional, claro que isso nem sempre eh possivel, mas o fato do Hibernate deixar a conexao aberta para poder usar durante todo o processo te ajuda nessa transparencia.

Ja utilizando os fetchs voce esta tendo que lidar com o problema de um BD diretamente, tem que tomar providencias diretas no seu codigo para que nao tenha problemas com a sua ferramenta. Entao, por definicao, a para aquilo que a ferramente se propoe, ser obrigado a usar o fetch seria mais antiPattern que o OpenSessionInView. (Na minha humilde opiniao).

Mas isso nem de longe quer dizer que voce nao deve usar fetchs porque a ferramenta teoricamente deve ser transparente. Seguindo tudo ao pe da letra voce vai se enfiar em problemas rapidinho.

Pra concluir: os conceitos sao importantes sim e voce deve estar atento a eles, questionar os pros os contras e principalmente os porques, mas nao se esqueca: Dont fight your framework.