galera, estou trabalhando em um sistema que tem um banco central, e atravéz desse banco central o usuario devera se conectar em seu banco especifico, é um sistema de empresas onde cada empresa tem seu proprio banco.
O sistema é web e usa hibernate + spring com 3 backends diferentes, eu imaginei em armazenar a sessionfactory de cada empresa em um tipo de pool, e o usuario da empresa acessar esse pool e pegar a sessionfactory correspondente, soh que ai vem o problema, minha experiencia com spring não é suficiente para um monstro desses :X
(é um projeto pessoal) e gostaria de idéias dos jedi daqui :}
Os dados são os mesmos em todos os bancos, ou seja, é um cluster de bancos? Ou cada base vai ter dados diferentes? Também não ficou muito claro esse banco central, pode explicar melhor?
Bom, caso seja um cluster de bancos, você passa o ip de todos os bancos no hibernate.cfg.xml.
Caso deva ser separado, a idéia de ter vários session factories me parece boa.
São vários bancos com dados diferentes, a principio pensei em usar um banco compartilhado para todas as empresas, mais isso com certeza vai me dar dor de cabeça posteriormente, então pensei nessa forma, um banco para cada empresa e o “banco central” é onde ficaram os dados de cada empresa, como o plano assinado, os dados da empresa, os dados de usuários administradores, pagamentos… enfim tudo que diz respeito a gerencia do plano de acesso ao sistema.
Axo que agora a idéia ficou mais clara pra que a galera possa opinar :}
Porque “dor de cabeça”? Eu teria apenas um para todos. E, caso necessário, teria um cluster de bancos.
Eu acho mais fácil ter uma tabela ‘Empresas’ e relacionamentos, do que ter que gerenciar session factories no código. É claro que você pode fazer isso de uma forma transparente usando algum padrão, mas a primeira vista não me parece a melhor opção.
Se você tem vários bancos por que você não cria uma PU (persistence unit) pra cada um e não injeta um EM (EntityManager) pra específica quando você precisar?
Seja mais claro no que precisa!
Os bancos são independentes? Ou cada sistema vai precisar de informações de um banco ou outroS vez ou outra?
São sistemas independentes e diferentes?
Ou são cópias do mesmo sistema em paralelo pra clientes diferentes?
Ou o sistema é compartilhado diferenciando-se em tempo de execução pra cada cliente?
[quote=nathanpsouza]São vários bancos com dados diferentes, a principio pensei em usar um banco compartilhado para todas as empresas, mais isso com certeza vai me dar dor de cabeça posteriormente, então pensei nessa forma, um banco para cada empresa e o “banco central” é onde ficaram os dados de cada empresa, como o plano assinado, os dados da empresa, os dados de usuários administradores, pagamentos… enfim tudo que diz respeito a gerencia do plano de acesso ao sistema.
Axo que agora a idéia ficou mais clara pra que a galera possa opinar :}[/quote]
Se vc está tentando implementar um sistema multi empresa isso é completamente errado. Desenhe o sistema para comportar todas as empreas num unico banco.
Estranho isso, porque não usa um banco só, e no cliente uma réplica dele como se fosse um cache para que o sistema possa funcionar off-line?
Não entendi a finalidade de um banco para cada empresa no MESMO ambiente.