Tenho uma aplicação WEB utilizando Hibernate, Struts e JSTL no servidor TOMCAT, que o meu cliente (e Testador) quer que tenha uma função em que ele escolha a qual base de dados irei me conectar (Desenvolvimento ou Produção).
Gostaria de saber se alguem sabe como eu faço o hibernate enxergar isso para que dependendo da opção que ele escolher, SOMENTE ELE acesse aquele banco, sem os demais usuarios que estiverem acessando aquela aplicação sejam afetados.
Faz o seguinte… No que iniciar a aplicação vc carrega os dois Session Factory e os armazenam no contexto da Aplicação.
Qdo algum usuário fizer logon e selecionar qual Base usar, daí vc coloca uma referencia para alguma das sessions factory na sessão daquele usuário.
M
mvsoares
Outra solução seria criar uma Factory com um método que retorna a session factory com base na seleção do usuário…
tipo vc fornece a opção para que ele escolha o bd somente no inicio da sessão e armazena a variável no msm escopo para futuras retrieves da session factory.
L
lmtovar
Beleza.
mas o meu problema eh…
a sessão do BD eh iniciada juntamente com o Tomcat. Para não ter perda de tempo em abrir a sessão do BD toda hora que for fazer consulta, alteração, etc.
tem como eu abrir duas sessões diferentes?? pq aih de acordo com a base de dados que o cliente quiser abrir eu seleciono uma sessão ou outra…
não sei se fui claro…
MUITO OBRIGADO
M
mvsoares
Sim… tem…
Vc criará as duas sessões (SessionFactroty) qdo o tomcat for iniciado…
Daí quado o usuario for logar no sistema ele deve selecionar qual bd utilizar… Vc armazera esse atributo na HttpSession.
Dai, antes de qualquer operação, vc recuperará a sessão (SessionFactroty) baseado no atributo do HttpSession através de uma factory…