[HIBERNATE] Conectar a bases de dados dinamicas

Bom dia pessoal do GUJ !

Estou tentando fazer um esquema com o hibernate para que ele se conecte com bases de dados de nomes dinamicos…

O caso é o seguinte, estou desenvolvendo um sistema voltado a usuários, e decidi criar uma estrutura onde cada usuario tem sua própria base de dados(em um unico servidor, é claro), evitando ter que guardar o ID do usuário em quase todas as tabelas de cadastro…assim além de deixar mais simples de fazer a lógica, também garante maior segurança.

Agora, vamos ao problema: COMO FAZER O HIBERNATE SE CONECTAR DINAMICAMENTE ?

No caso, temos uma base de dados que é fixa, onde temos todas as tabelas de negocio, com configurações gerais do sistema, e informações para saber quais as bases de cada cliente…até ai tudo bem.

No xml do hibernate, colocamos fixamente o nome do banco de dados que ele deve se conectar.

Mas como fazer o hibernate gerenciar dinamicamente ? alguem pode me dar uma luz ?

Provavelmente vao dar a opção de utilizar a classe “Configuration” do hibernate e gerar via java os dados para conectar, porem eu nao queria abordar desta maneira, pois estou usando Spring 3.0, e quero que ele injete tudo para mim.

Obrigado.

Olá,

esse artigo deve ajudar: http://www.devx.com/Java/Article/47817

Você pode procurar tb por: Multitenant hibernate no google

[quote=DanielSchmitz]Olá,

esse artigo deve ajudar: http://www.devx.com/Java/Article/47817

Você pode procurar tb por: Multitenant hibernate no google

[/quote]

Obrigado Daniel, vou dar uma olhada nesses links.

Entendi como o hibernate 4 lida com o multi tenancy.

Porém, agora estou com um problema mais afundo, porque assim, os tutoriais que li, mostram como criar o padrão Multi Tenancy de modo estatico, ou seja, sabendo exatamente quem serão os “tenants” dos schemas…porém em meu caso, não saberei quem são eles, porque ele deve ser geradom dinamicamente a partir do momento que um usuário se cadastrar no sistema.

Agora, como fazer o hibernate gerar a sessionFactory sem saber o nome do “tenant” ? tem algum modo de executar via linha de comando ?

Obrigado.