Fala Pessoal!
Eu tenho um sistema que usa Hibernate e VRaptor, e eu uso 2 bancos de dados.
Eu estou tendo um problema nos meus testes:
O login sempre é feito em uma Base (nome = DB1) onde é verificado o login e depois redireciona para outra base.
Então, usando o e-commerce que a apostila de VRaptor e Hibernate da Caelum ( FJ-28 ), eu criei duas bases e uma lógica que troca de base sempre que eu precisar.
Eu não sei se isso é besteira: eu abro 2 navegadores, em 1 eu troco a base e no outro não, porém eu percebi que nos dois navegadores a base é trocada.
Pensando maior: Imagina um cliente usando uma base e de repente a base dele é trocada por outra pessoa.
Isso acontece?
Como que faço para que a minha aplicação não interfira nas sessões de usuários?
Já tentou utilizar o Hibernate com configuração programática?
Eu tenho uma aplicação que utiliza 4 bancos de dados diferentes, um para cada coisa quando solicitados. Resolvi esse problema com configuração programática.
Sim, eu a uso.
Inclusive eu altero o banco por um método que refaz a configuração programática.
Pessoal, consegui resolver o meu problema e vou postar:
A classe que cria o SessionFactory foi anotada com @SessionScoped e não mais com @ApplicationScoped.
Logo, a cada nova sessão eu tenho uma conexão diferente.
Isso poderá acarretar um problema futuro.
Quanto mais conexões diretas ao banco, menor o desempenho dos comandos SQL e suas respectivas respostas.
Tente utilizar o C3P0, ele é muito bom para lidar com lotes de conexões… ele só cria uma nova conexão quando necessário.