Trocar base de dados em runtime no Hibernate

Fala pessoal,

Estou com o seguinte problema:

No sistema que estamos desenvolvendo (eu ¬¬) usaremos toda a camada de persistência usando Hibernate. Já tem alguns cadastros e tudo o mais funcionando. O problema é que decidimos que haveriam diferentes ambientes sob os quais a aplicação poderia ser iniciada. Na tela de login existe um combo com as opções de .properties que contém as informações de conexão com diferentes bases de dados e SGBDs. Vc seleciona um ambiente (.properties) e ele atualiza o hibernate.properties com as informações correspondentes. Depois ele inicializa uma sessão usanco uma classe Singleton chamada HibernateFactory.

Essa parte funciona legal, consigo usar tanto o ambiente em MySQL e SQL Server 2005. O fato é que, quando eu faço uma tentativa de login em um ambiente (carregou as informações do hibernate.properties - informações que vieram de um “propertie de ambiente”), eu não consigo mais trocar para outra base de dados ou SGBD. Ou seja trocar para outro ambiente. O hibernate.properties é modificado e tudo o mais.

Já tentei, mesmo em Singleton, fechar o SessionFactory e recriá-lo na esperança de que ele usasse as novas configurações e nada. Ql a melhor forma de fazê-lo?

Qualquer dúvida sobre a descrição acima, é só postar.

Valew antecipadamente, qlqr ajuda é mais que bem vinda :smiley:

Nenhuma resposta?

A pergunta ficou mal formulada?
Não tem como mesmo?

Qualquer ajuda é bem vinda…

Obrigado.

Os arquivos de Properties, sejam eles quais forem, “geralmente”, são carregados apenas uma única ves em um sistema. Por isso o problema.

Não te aconsenho usar Properties do hibernate para esse tipo de situação…

O que faço aqui é o seguinte (tendo em mente que uso JPA e Hibernate), eu configuro várias “units” (configurações do banco de dados), e quando instancio meus Daos (geralmente via IOC), passo para eles qual unit pegar e dela recupero minha fábrica de EntityManager (no seu caso Session) e crio minhas conexões…

teve um post sobre isso aqui

http://www.guj.com.br/posts/list/49369.java

Poutz, valew mesmo. dei uma olhada no link que vc me mandou e tudo que eu precisei fazer foi carregar o propertie para o AnnotationConfiguration. Como a factory era singleton, eu fiz um método que recarregava esse propertie apenas.

Fica como guia pra quem tiver o mesmo problema!!

Abraço