[RESOLVIDO] Usando DataBase dinamica conforme usuario - EJB + EclipseLink

2 respostas
caiofabioa

E ai galera, beleza?

Estou desenvolvendo um aplicativo web e me deparei com a seguinte situação. Imagine que no mesmo aplicativo 10 clientes tenham acesso, o dado de um não pode ser visível para outro, beleza, colocaria em cada tabela um campo idCliente, porém queria fazer diferente pois e se um dia eu tiver 2000 clientes? vai ficar uma bagunça, dar manutenção depois sem chances!

Como eu posso fazer para chamar uma base de dados diferentemente para cada cliente que se logar? Lembrando que estou usando EJB com annotations e o banco de dados é PostgreSQL

Obrigado

2 Respostas

Hebert_Coelho

Opa, tudo bem?

O que você procura se chama multi tenancy. Você vai ter que passar o id desse usuário lá da tela de login até a classe que faz conexão/consultas. E em suas queries/conexões etc você vai ter que sempre usar esse valor.

Existem dois modos de multi tenancy: com o id do cliente ou com schemas diferentes. Ambas com suas vantagens/desvantagens.

Tem diversos modos de passar esse valor, você pode usar o thread-local ou o Apache Shiro.

Google vc acha um monte de exemplo.

caiofabioa

Era isso mesmo que eu estava procurando! Muito obrigado!

E para quem tem interesse no assunto e tem conta no dev media, achei esses dois links muito bons

Introdução a Multi-Tenancy com Hibernate 4
Transforme aplicações web em serviços Multi Tenant

Criado 14 de abril de 2015
Ultima resposta 14 de abr. de 2015
Respostas 2
Participantes 2