| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 15:51:35
|
adrianostanley
JavaGuru
![[Avatar]](/images/avatar/e76d88aeab47da20d61b1b489af1a281.jpg)
Membro desde: 28/06/2006 09:30:23
Mensagens: 243
Localização: Juiz de Fora/MG
Offline
|
Boa tarde a todos.
Em minha aplicação, sigo sempre a mesma forma de trabalhar com a session do Hibernate: abro e fecho sempre que houver uma solicitação ao banco - não sei se é a melhor forma de se trabalhar como hibernate, visto que é uma aplicação web com um número razoável de acessos.
Enfim... minha dúvida mesmo é que estou criando uma classe que ficará por conta de executar algumas ações no banco (que vão precisar de abrir e fechar transações) sempre que um usuário efetuar o login. Criei a classe como espécie de Serviço, que também será utilizada por outras partes do sistema. Implementei em forma de Singleton e minha dúvida agora é se é melhor separar uma Session do Hibernate somente pra essa classe. Isto é, criar um campo static contendo essa session e utilizá-la em todos os métodos da classe que precisarão ir ao banco. Dessa forma não precisaria abrir e fechar uma session toda vez que a classe fosse chamada. Em contra partida acho que reservando uma session somente pra uma classe poderia limitar o número de acessos ao banco, estou certo?
Enfim, até que ponto vale a pena fazer isso ou mandar ele abrir/fechar uma sessão sempre?
Obrigado a todos.
|
Adriano 'Stanley'
http://www.enigmapremiado.com.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 16:21:17
|
Gustavo Sperandio
JavaChild
![[Avatar]](/images/avatar/2c6d7f23f661010f5b0c2fa53517c29d.jpg)
Membro desde: 21/03/2011 15:01:55
Mensagens: 107
Offline
|
Acho que essa sua ultima pergunta é bem complicada, tem de levar em consideração varias coisas antes de responder, enfim cada caso é um caso, mas sobre sua duvida de acesso ao banco em minhas aplicações web eu uso em parte a idéa do Singleton mas não deixo como static porque isso atrapalha na concorrência dos métodos, com isso eu deixo uma classe para conexão com o banco sempre ativa e vou fazendo a demanda deixo o pool por conta do hibernate, nele se resolve quantas conexões qual o tamanho essas coisas e se eu quiser controlar essa parte uso o c3po para ajustar mas nunca precisei!!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 16:51:21
|
adrianostanley
JavaGuru
![[Avatar]](/images/avatar/e76d88aeab47da20d61b1b489af1a281.jpg)
Membro desde: 28/06/2006 09:30:23
Mensagens: 243
Localização: Juiz de Fora/MG
Offline
|
Eu sou mt novato nesse ramo do Hibernate e suas sessões.
Mas com uma sessão aberta eu consigo controlar todas as requisições da minha aplicação????
|
Adriano 'Stanley'
http://www.enigmapremiado.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 17:59:16
|
Gustavo Sperandio
JavaChild
![[Avatar]](/images/avatar/2c6d7f23f661010f5b0c2fa53517c29d.jpg)
Membro desde: 21/03/2011 15:01:55
Mensagens: 107
Offline
|
Sim sem o menor problema, tenho sistema com mais de 400 usuários pendurados fazendo varias requisições ao banco e com um único pool para gerenciar.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 18:07:52
|
adrianostanley
JavaGuru
![[Avatar]](/images/avatar/e76d88aeab47da20d61b1b489af1a281.jpg)
Membro desde: 28/06/2006 09:30:23
Mensagens: 243
Localização: Juiz de Fora/MG
Offline
|
Mas esse único pool que vc fala é o que??
Vc só faz um openSession() quando o site é rodado pela primeira vez e depois disso nunca mais faz um session.close()?????
|
Adriano 'Stanley'
http://www.enigmapremiado.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 19:47:06
|
Gustavo Sperandio
JavaChild
![[Avatar]](/images/avatar/2c6d7f23f661010f5b0c2fa53517c29d.jpg)
Membro desde: 21/03/2011 15:01:55
Mensagens: 107
Offline
|
È um pouco mais complicado que isso, eu montei uma api para me da esse suporte
mas basicamente fica tudo concentrado em uma EntityManagerFactory e para cada ação eu uso um EntityManager esse que eu inicio e comito a requisição
|
|
|
 |
|
|