Bom dia pessoal do GuJ!
Tenho aqui uma dúvida que tem me deixado meio cabreeero…
Na minha empresa temos um produto Web onde as conexões (utilizando Hibernate) sao feitas de uma maneira meio braçal usando o método openSession()…
Como assim? em CADA método das DAOs ele faz um getSession(), e no final do método ele fecha a transação. Só que eu nao fiquei contente com isso por que imagine se na camada de negócio ele precisa acessar dois métodos de alguma DAO?! então ele faria dois getSession() pra depois fechar manualmente!!
Fui pesquisar sobre boas maneiras de gerenciar a sessão do Hibernate e lembrei que no meu trabalho anterior usávamos o Open Session In View, porém, quando eu fiz meu primeiro cursinho em Java o professor falou “quanto menos tempo a conexão ficar aberta, melhor!”, acontece que o Open Session In View abre a conexão na View e Só fecha após todos os trabalhos no lado do servidor, isso inclui trabalhos que não necessitariam mais de uma conexão alocada para o cliente, ficando assim conexão aberta quando não deveria! (? é aqui a minha dúvida, a conexão fica realmente alocada?? )
O que vocês acham? é realmente assim que funciona? Pelo que li sobre o método openSession() ele abre uma nova conexão cada vez que esse método é chamado, quando a DAO faz um getSession(), na verdade, de modo encapsulado, é executado um openSession().
O meu questionamento é válido? :roll: eu queria abrir sessão no banco sem ter que em cada inicio e fim de método de cada DAO ter que ficar pedindo e fechando manualmente.
vlw