Hibernate + Postgres + Schema

9 respostas
Jo_Ant_io

Olá, utilizo Spring, hibernate, PostgreSQL, e Java
Gostaria de saber a viabilidade de se ter um arquitetura como essa,
se alguém já viu algo semelhante e queira dar uma ajuda será bem vinda.

No esquema public (default do postgresql) eu tenho só uma tabela de
usuários com os campos login, senha e esquema.

Quando o usuário efetuar login o sistema verifica o esquema e faz o
hibernate trabalhar em cima do esquema desse usuário.

Todos os esquemas tem as mesmas tabelas exemplo:
Schema: User01; Tabelas: usuario, endereço, dependentes, produtos…
Schema: User02; Tabelas: usuario, endereço, dependentes, produtos…

O sistema é online e pode ter mais de um usuário logado ao mesmo
tempo.

Alguém já trabalho dessa forma e sabe como fazer a troca dinâmica de
esquemas com o Hibernate?

É realmente vantajoso trabalhar desta forma, tendo em vista que, nesse
sistema, os dados de cada usuário só são pertinentes a ele mesmo.

Desde já agradesço.

9 Respostas

renanpto

Cara voce ta pensando em criar pra cada usuario um esquema no banco ?

A melhor solucao é ter um unico esquema e pronto HAuHA. A não ser que cada cliente tenha seu banco e tal, mas mesmo assim… vai de cada app…

Jo_Ant_io

Cara voce ta pensando em criar pra cada usuario um esquema no banco ?

A melhor solucao é ter um unico esquema e pronto HAuHA. A não ser que cada cliente tenha seu banco e tal, mas mesmo assim… vai de cada app…

A aplicação é web e todos os clientes acessarão o mesmo servidor, logo acessarão a mesma base,
aiw eu tenho que diferenciar dados de cada cliente, a melhor forma que vejo em fazer isso seria utilizando schemas diferentes
para cada cliente.

Desde já agradeço

M

Cara acho que você criar um schema para cada cliente não vai ser legal não. Você pode fazer o relacionamento entre tabelas através de PK e FK.

Se caso vc for usar apenas uma tabela, ex: Clientes, cria um Id que vai identificar cada cliente e na hora de fazer uma busca por tudo que pertencer a um cliente, fica bem simples.

Ex: Select * from Clientes where id_cliente = ?

Jo_Ant_io

Cara acho que você criar um schema para cada cliente não vai ser legal não. Você pode fazer o relacionamento entre tabelas através de PK e FK.

Se caso vc for usar apenas uma tabela, ex: Clientes, cria um Id que vai identificar cada cliente e na hora de fazer uma busca por tudo que pertencer a um cliente, fica bem simples.

Ex:
view plaincopy to clipboardprint?

  1. Select * from Clientes where id_cliente = ?

Select * from Clientes where id_cliente = ?

A intenção de fazer schemas diferentes era pra justamente não precisar agregar,
em todas a consultas, inserções e exclusões o diferenciador do usuário
e nem terque adicionar o usuário em todas as tabelas.

Ainda estou estudando uma solução associada ao Spring.

Desde já agradesço a todos que responderam

A

Boa noite pessoal.

retomando o assunto…

Estou iniciando um projeto com essa mesma ideia/arquitetura, utilizando Spring, hibernate, PostgreSQL

Tenho no esquema public as tabelas de usuarios…, e um esquema para cada cliente, preciso conectar no esquema referente ao usuario que está acessando o sistema.

alguém tem algum exemplo/tutorial que possa disponibilizar fazendo favor.

Obrigado.

zack900

Estava pensando a mesma coisa, alguém tem ideia se essas praticas seriam viáveis?

No meu cenário eu tenho empresas e lojas cada empresa poderá ter N lojas, penso em separar isso por schema:

Schema 1, Empresa 1, Lojas 1, Loja 2, …
Schema 2, Empresa 2, Lojas 1, Loja 2, …

e ai alguém já usou isso em prática ?

grato.

alexfe

Ta aqui a resposta galera Hibernate Multi-Tenancy , estudem e sejam felizes em problemas como o deste tópico :slight_smile:

olha o doc http://docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/ch16.html

adriano_si

zack900:
Estava pensando a mesma coisa, alguém tem ideia se essas praticas seriam viáveis?

No meu cenário eu tenho empresas e lojas cada empresa poderá ter N lojas, penso em separar isso por schema:

Schema 1, Empresa 1, Lojas 1, Loja 2, …
Schema 2, Empresa 2, Lojas 1, Loja 2, …

e ai alguém já usou isso em prática ?

grato.


Agora eu entendi… Estava pensando em Usuário a nível de Pessoa Física…

Sendo empresas, a coisa já muda um pouco de figura. UFA…

zack900

alexafe:
Ta aqui a resposta galera Hibernate Multi-Tenancy , estudem e sejam felizes em problemas como o deste tópico :slight_smile:

olha o doc http://docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/ch16.html

É justamente isso que estava vendo, já vinha aqui postar, estou estudando esse padrão, vi que muitos sistamas SaaS e Cloud está usando, parece uma solução promissora, apesar de aumentar um pouco mais a complexidade do projeto segundo alguns artigos q vi, valeu pessoal obrigado.

Criado 26 de janeiro de 2011
Ultima resposta 8 de out. de 2014
Respostas 9
Participantes 7