Criar varias conexões Hibernate

Bom dia pessoal.
Estou precisando desenvolver um sistema onde o usuário vai entrar no site da empresa e fazer seu cadastro, e quando terminar esse cadastro é preciso criar uma nova conexão com um novo banco, isso para cada usuário cadastrado.

E possível?

cara que requisito ligeiramente esquisito

deixe-me explicar o motivo: normalmente um banco suporta um numero maximo de conexões. abrir uma conexão por request é exaustivo e pode levar a problemas de performance no seu sistema, ou até não funcionar. o que se faz normalmente é usar um pool de conexões (via c3p0 por exemplo ) assim o hibernate gerencia essas conexões de acordo com o que foi configurado.

vc parece ter um caso de multiplas databases ( sei la pq ) e ai vc tem que criar uma SessionFactory por banco de dados, cada um com uma configuração diferente ( em xml por exemplo ) e ai vc vai ter que usar a SessionFactory correta em cada caso.

E talvez ai vc deva pensar em um pool de conexões por banco.

eu ouvi alguem falar uma vez sobre “Distributed Transaction Managers”, não sei se ajuda ou prejudica o seu caso

qual a razão para conectar em outra database?

O cliente deseja que casa vendedor tenha um banco de dados…
Muito obrigado vou pesquisar sobre o assunto

isso é um pattern bem incomum - em geral necessario se vc tem um grande volume de dados e precisa fazer sharding de database. do ponto de vista de segurança é questionavel, mas ok. manda quem pode…

tome cuidado com as rotinas de backup e em como vc vai alterar a estrutura do banco no futuro, pq se vc adicionar uma coluna nova vai ter que fazer isso em diversas databases depois.

Muito obrigado… vou estudar aqui o que vc me passou…

Pelo que entendi você quer algo como um SaaS, onde eu vou lá para criar uma nova empresa (por exemplo) e ele cria o banco e toda a estrutura necessária para sair operando o sistema, com o login e senha que o cara informar na criação da empresa… claro que você não vai poder deixar isso livre para qualquer um acessar e pode realizar esse procedimento, algum mecanismo de controle “pré-criação” da base você vai precisar ter, como o amigo acima mencionou… alguma moderação… não sei, aí é com você…

Tem várias formas de fazer, ou você guarda uma SQL em um arquivo com toda a estrutura do banco e cria quando for necessário… ou você cria o banco a partir da entidades (o Hibernate faz isso)… ou você pode usar algo como o Flyway… isso para a criação da base…

Você ainda vai precisar criar dinamicamente essa SessionFactory (ou EntityManagerFactory) e armazenar em um pool ou algo assim…

É mais ou menos isso? Posso te ajudar em algum código se quiser…

muito obrigado vou dar uma estudada aqui