Dúvida - Hibernate [URGENTE]!

Galera,

Gostaria de saber se existe uma forma intuitiva/amigável de utilizar várias conexões com um mesmo banco de dados (cujo schema se diferenciem) no Hibernate? Digo, utilizar sem a necessidade de replicação de Beans (DAO, HibernateProperties e SessionFactory)? Em outras palavras, a aplicação necessita se conectar com vários Schemas de um mesmo DataSource, sendo que todos os schemas conterão as mesmas estruturas de tabelas/campos. Existe algo p/ mudar o schema no DAO em tempo de execução ou algo do tipo ?

Alguém poderia me dar uma força nisso ?

[]'s

Supondo que eu entendi o seu problema, o que você tem é um cluster de bancos de dados?

Se for, veja isso -> http://c-jdbc.objectweb.org/

Não… No meu caso é um único banco de dados com vários schemas! Sendo que cada schema deste mesmo banco terá a mesma estrutura de tabelas! Imagina que tem um único banco de dados e dentro dele tem vários schemas, onde para acessar a tabela seria algo assim: .

! Entendeu !?

Meu problema Mauricio, é o fato de replicações de informações (mapeamentos/properties/etc.) para acessar cada schema no banco!

P.S.: No Hibernate mapeia-se estes schemas no hbm.xml ou no hibernateConfig.

[]'s

Ah, cada schema vai ter tabelas diferentes?

Não… não…

Cada schema terá estrutura de tabelas/campos iguais, com conteúdos diferentes! Seria algo assim… cada cliente terá seu schema com conteúdo relacionado ao mesmo.

Aaaaaaaaaaaahhhhhhhhhhh!

Agora a coisa mudou de figura :smiley:

Veja só, o modo mais simples é você implementar um ConnectionProvider (do Hibernate) que retorne a conexão para o schema do usuário que está atualmente fazendo a requisição.

Você pode, por exemplo, colocar o usuário em uma variável ThreadLocal e lá na hora que você for retornar uma conexão pelo ConnectionProvider verificar qual o usuario que está nessa ThreadLocal e só então retornar a edição correta.

Hummm… Boa… Já uma luz… Vou estudar melhor a respeito!

Obrigado kra…

[]'s

Na hora que o usuário realizar o login na aplicação, pegue o schema que ele pertence e salve (client voce salva em algum atributo, server voce pode colocar essa informação na sessão), toda vez que tu for abrir uma session do hibernate, você pega o schema dele, abre uma conexão e passa para sessão do hibernate utilizar, assim você faz isso apenas 1 vez.

Olá casmeiron,

Valeu pela ajuda. O único problema é que eu não abro e gerencio a sessão do hibernate. Quem faz isso e gerencia-o é o Spring. Estou utilizando String c/ Hibernate. Pesquisei algo para setar schemas, em tempo de execução, no Spring/hibernate e não encontrei nada. :frowning:

Quem sabe a sugestão do Mauricio (ConnectionProvider) possa me ajudar. Tenho que estudá-la ainda p/ ver se dá p/ utilizar junto com o Spring.

Desde já valeu pela força! Se tiver outra sugestão pode postar aí…

[]'s

Estou com o mesmo problema e não sei como resolver… estou começando com Hibernate agora…
minha pequena aplicacao funciona da seguinte forma.
O usuário qnd loga no sistema ele diz qual empresa ele pertence, o login e senha.
Eu tenho uma tabela de empresas no Schema publico.
Nessa tabela tem um campo que é o nome do Schema… exemplo

tabela empresa

|nome| esquema|
| Guj  | sguj       |
| Uol  | suol       |

eu tenho um schema no BD com nome de sguj, suol, etc.
qnd o usuário logar eu vejo qual esquema ele ta e acesso a tabela de usuario dentro do esquema correto… existem outras tabelas dentro do schema, mas todos schemas seguem a mesma estrutura. Como fazer o HBM do Usuario acessar o esquema correto??

Vlw pela força!

Abraços

kubanacan, gostaria de saber se você já conseguiu resolver esse seu problema? Pois estou passando por um muito parecido (para não dizer igual hehehe).

[quote=kubanacan]Estou com o mesmo problema e não sei como resolver… estou começando com Hibernate agora…
minha pequena aplicacao funciona da seguinte forma.
O usuário qnd loga no sistema ele diz qual empresa ele pertence, o login e senha.
Eu tenho uma tabela de empresas no Schema publico.
Nessa tabela tem um campo que é o nome do Schema… exemplo

tabela empresa

|nome| esquema|
| Guj  | sguj       |
| Uol  | suol       |

eu tenho um schema no BD com nome de sguj, suol, etc.
qnd o usuário logar eu vejo qual esquema ele ta e acesso a tabela de usuario dentro do esquema correto… existem outras tabelas dentro do schema, mas todos schemas seguem a mesma estrutura. Como fazer o HBM do Usuario acessar o esquema correto??

Vlw pela força!

Abraços[/quote]