Hibernate trabalha com vários bancos ao mesmo tempo?  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
mvurban
Thread.start()
[Avatar]

Membro desde: 14/04/2008 08:54:37
Mensagens: 25
Offline

Olá pessoal,

Estou iniciando no hibernate, na verdade é nhibernate pois minha plataforma é .net.

Estou começando um projeto de medio porte, onde tenho um bom tempo para concluílo, decidi que vou utlizar nhibernate pra aprender e porque o projeto se encaixa bem na estrutura orientação a objetos.

Agora um requisito importante neste projeto é que vou precisar trabalhar com mais de um database ao mesmo tempo. Tipo 2 bases sql e uma Oracle. Em certas situações vou precisar ler de um banco, aplicar regras de negócio e então persistir no outro.

Gostaria de saber se o hibernate suporta este tipo de requisito e como faço pra configurar isso.

Obrigado a todos.
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

Cara, uma vez eu vi uma palestra dum cara da Red Hat, ele disse que tem um projeto que faz isso. Eu não lembro o nome, não sei se está estável, não se está disponível, não lembro se era só um roadmap e muito menos se é só para a versão Java do Hibernate (o que eu suspeito).



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline

Cara... em Java, funciona , como implementação da JPA. Agora, em .NET, as coisas mudam de figura. Não tenho muita certeza, mas acredito que, por ser uma implementação de JPA e JPA suportar mais de um banco, então o Hibernate (nhibernate) funciona com vários, sim.

Não sei como funciona o NHibernate, mas acredito que, pra isso, você tenha que criar objetos Session distintos, cada um com uma Configuration diferente.

Avisa se funcionar.

Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

LeoMarola
JavaGuru
[Avatar]

Membro desde: 17/07/2006 10:35:11
Mensagens: 201
Localização: Rio de Janeiro
Offline

Olá

No Hibernate você cria SessionFactories. Cada SessionFactory tá ligada a um Banco. Basta que vc cria 2.. N SF's.

Para abstrair essa criação você poderia consultar o Padrão Factory.

Ah, este Link pode te dar uma luz.

@Test

SCJP 5
SCWCD 5
SCBCD 5
SCEA 5 (Starting..)

[MSN]
reinaldob
JavaChild

Membro desde: 14/04/2003 23:16:35
Mensagens: 102
Localização: São Paulo, Brasil
Offline

Veja se não é esse projeto que o Rubem comentou...

http://www.hibernate.org/414.html
[ICQ]
mvurban
Thread.start()
[Avatar]

Membro desde: 14/04/2008 08:54:37
Mensagens: 25
Offline

Valeu pessoal.

LeoMarola é exatamente esse o problema, já entendi o mecanismo e fiz o factory, pra decidir qual o banco que eu quero usar. Vlw.

Neste caso eu teria então n sessions (uso o padrão singleton aqui tb) diferentes, 1 para cada banco que eu precisar usar, correto?

Uma outra dúvida, agora relacionada a performance. Eu preciso listar uma tabela de categorias, esta tabela terá milhares de registros, então vou fazer uma paginação. Ja vi que o hibernate tem métodos para cuidar disso que são o SetMaxResults e o SetFirstResult, minha dúvida é se só fazendo isso ele já entende que eu quero 20 de cada vez e vai no banco e só traz os 20, ou ele traz tudo e depois seleciona 20? Preciso configurar alguma outra coisa?

vlw.
Grinvon
GUJ Master
[Avatar]

Membro desde: 18/08/2003 22:10:49
Mensagens: 1899
Localização: Em qualquer lugar
Offline

Uma dúvida! Esse SessionFactory é do hibernate ou do JPA?

>> Inocêncio.
[MSN] [ICQ]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

SessionFactory é hibernate. EntityManagerFactory é JPA.

O shards serve pra outra coisa. So pra poder usar bancos diferentes ao mesmo tempo basta configurar varias factories no seu hibernate.cfg.xml (ou no persistence.xml, pois jpa tambem oferece esse recurso)

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
joellobo
Thread.start()
[Avatar]

Membro desde: 27/08/2007 14:45:01
Mensagens: 33
Localização: Fortaleza/CE
Offline

outra coisa = banco de dados distribuídos

Joel Lobo
blogdojoellobo.blogspot.com
[WWW]
peerless
GUJ Master
[Avatar]

Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline

Paulo Silveira wrote:SessionFactory é hibernate. EntityManagerFactory é JPA.

O shards serve pra outra coisa. So pra poder usar bancos diferentes ao mesmo tempo basta configurar varias factories no seu hibernate.cfg.xml (ou no persistence.xml, pois jpa tambem oferece esse recurso)


adicionar as propriedades em runtime para os casos que mudam não seria mais interessante?

follow me
pitacos

"The most problems that teams face are about communication, and all the others are too." - Dan North





[MSN]
Sefo
JavaChild
[Avatar]

Membro desde: 18/08/2006 10:02:28
Mensagens: 102
Offline

Paulo Silveira wrote:SessionFactory é hibernate. EntityManagerFactory é JPA.

O shards serve pra outra coisa. So pra poder usar bancos diferentes ao mesmo tempo basta configurar varias factories no seu hibernate.cfg.xml (ou no persistence.xml, pois jpa tambem oferece esse recurso)


Paulo, me tire uma dúvida a respeito desse assunto. Vc disse que EntityManagerFactory é JPA, não Hibernate, mas procurando aqui em casa, descobri um artigo da Mundo Java nro 17 entitulado "Fast Hibernate 3" e é usado um EntityManagerFactory no exemplo principal.

NY GIANTS!!!!

WAR BIG BLUES!!!!

hugosantos
Entusiasta Java

Membro desde: 11/08/2008 23:35:53
Mensagens: 18
Localização: São Paulo
Offline

Alguém poderia postar um exemplo de como isso (multiplas session's) no xml e a referência disso no código ?

Hugo Santos
[Email] [MSN]
ozix
JavaEvangelist

Membro desde: 25/05/2006 18:00:15
Mensagens: 326
Localização: Porto Velho
Offline

Paulo Silveira wrote:SessionFactory é hibernate. EntityManagerFactory é JPA.

O shards serve pra outra coisa. So pra poder usar bancos diferentes ao mesmo tempo basta configurar varias factories no seu hibernate.cfg.xml (ou no persistence.xml, pois jpa tambem oferece esse recurso)

Certo. O problema é precisar de uma mesma transação pra persistir em mais de um banco. Não dá pra dá rollback nesse caso, ou dá?

O céu é azul porque a matrix roda em Windows
Grinvon
GUJ Master
[Avatar]

Membro desde: 18/08/2003 22:10:49
Mensagens: 1899
Localização: Em qualquer lugar
Offline

Em minha aplicação eu chego a utilizar até dois bancos ao mesmo tempo, mas apenas quando irei fazer sincronia de dados entre eles.

No caso não utilizei nenhum SessionFactory de emf, apenas criei duas instâncias controláveis diferentes para cada banco.

>> Inocêncio.
[MSN] [ICQ]
ranieripieper
Smalltalk

Membro desde: 12/03/2008 10:17:18
Mensagens: 3
Offline

Gostaria de saber o seguinte:
Tenho uma aplicação que N clientes irão utilizar. Cada cliente tem seu banco de dados. Na aplicação por um parâmetro eu sei que ele está acessando o cliente X ou Y. Como eu faço esta sessão do usuário utlizar o banco de dados X ou Y ?
E posso ter problemas tendo várias conexões para a mesma aplicação?
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team