Hibernate + 2 Bancos

Boa tarde caros amigos,

Vou precisar da ajuda de vocês, nunca trabalhei com aplicações usando 2 bancos, e agora aqui na empresa precisarei pegar dados de um segundo banco, não sei nem como começar.

Uso Hibernate com banco Firebird e usarei agora também o Banco Oracle 11g.

Será que alguém pode me ajudar?

Desde já agradeço a atenção dos amigos.

Att.
Diego Silva

  1. Crie no arquivo persistence.xml um persistence unit para o Oracle
  2. Configure tudo que for necessário dentro do persistence.xml
  3. Verifique se em algum lugar é utilizado native query. se sim, você terá que migrar as consultas para o Oracle (caso dê mensagem de invalid sintax).
  4. Pode ser que dê erro na hora de migrar a chave também, então você provavelmente terá que desligar a questão de chave de um lado para o outro durante a migração.

[quote=Hebert Coelho]1) Crie no arquivo persistence.xml um persistence unit para o Oracle
2) Configure tudo que for necessário dentro do persistence.xml
3) Verifique se em algum lugar é utilizado native query. se sim, você terá que migrar as consultas para o Oracle (caso dê mensagem de invalid sintax).
4) Pode ser que dê erro na hora de migrar a chave também, então você provavelmente terá que desligar a questão de chave de um lado para o outro durante a migração.
[/quote]

Muito obrigado caro Hebert, mas o projeto aqui é jsf1.2 e não possui o persistence.xml o processo todo é feito com DAO genérico, cria o objeto e insere.

Tentei fazer com 2 Hibernate-cfg.xml e duas HibernateSessions chamando a referente ao oracle, porém trava e não obtem a session.

Estou JPA aqui mas o Hibernate e bem parecido…

Aqui estou fazendo a conexão pelo Jboss 7, no arquivo de configuração eu coloco as URL com usuário e senha do bancos, e na aplicação leio estas configurações para o “CONEXAO_BANCO_1” e “CONEXAO_BANCO_2” em um arquivo persistence.xml que fica dentro da aplicação,
Em uma classe java leio o persistence assim private static EntityManagerFactory emfRetaguarda = Persistence.createEntityManagerFactory("banco1");

PERSISTENCE.XML

	<persistence-unit name="banco1" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<non-jta-data-source>java:/CONEXAO_BANCO_1</non-jta-data-source>

          </persistence-unit>

ARQUIVO DE CONFIGURAÇÃO

            <datasources>
                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                </datasource>
                <datasource jta="true" jndi-name="java:/CONEXAO_BANCO_1" pool-name="DefaultDS_pool" enabled="true" use-java-context="true" use-ccm="true">
                    <connection-url>###### url de conexão ######</connection-url>
                    <driver>oracle</driver>
                    <security>
                        <user-name>###### usuario ######</user-name>
                        <password>###### senha ######</password>
                    </security>
                </datasource>
                <datasource jndi-name="java:/CONEXAO_BANCO_2" pool-name="PaywaretDS_pool" enabled="true" use-java-context="true">
                    <connection-url>###### url de conexão ######</connection-url>
                    <driver>oracle</driver>
                    <security>
                        <user-name>###### usuario ######</user-name>
                        <password>###### senha ######</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="oracle" module="com.oracle.jdbc">
                        <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
                        <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
                    </driver>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>

[quote=dlsilva1812][quote=Hebert Coelho]1) Crie no arquivo persistence.xml um persistence unit para o Oracle
2) Configure tudo que for necessário dentro do persistence.xml
3) Verifique se em algum lugar é utilizado native query. se sim, você terá que migrar as consultas para o Oracle (caso dê mensagem de invalid sintax).
4) Pode ser que dê erro na hora de migrar a chave também, então você provavelmente terá que desligar a questão de chave de um lado para o outro durante a migração.
[/quote]

Muito obrigado caro Hebert, mas o projeto aqui é jsf1.2 e não possui o persistence.xml o processo todo é feito com DAO genérico, cria o objeto e insere.

Tentei fazer com 2 Hibernate-cfg.xml e duas HibernateSessions chamando a referente ao oracle, porém trava e não obtem a session.[/quote]
persistence.xml não tem nada haver com JSF, ele é configuração do JPA.

Se você tem o hibernate-cfg.xml é nele que tem que ficar suas configurações. Se não obtem a session algum erro deve estar acontecendo. Veja o seu log qual erro está aparecendo lá.

[quote=robsonsan]Estou JPA aqui mas o Hibernate e bem parecido…

Aqui estou fazendo a conexão pelo Jboss 7, no arquivo de configuração eu coloco as URL com usuário e senha do bancos, e na aplicação leio estas configurações para o “CONEXAO_BANCO_1” e “CONEXAO_BANCO_2” em um arquivo persistence.xml que fica dentro da aplicação,
Em uma classe java leio o persistence assim private static EntityManagerFactory emfRetaguarda = Persistence.createEntityManagerFactory("banco1");

PERSISTENCE.XML

	<persistence-unit name="banco1" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<non-jta-data-source>java:/CONEXAO_BANCO_1</non-jta-data-source>

          </persistence-unit>

ARQUIVO DE CONFIGURAÇÃO

<datasources> <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"> <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url> <driver>h2</driver> <security> <user-name>sa</user-name> <password>sa</password> </security> </datasource> <datasource jta="true" jndi-name="java:/CONEXAO_BANCO_1" pool-name="DefaultDS_pool" enabled="true" use-java-context="true" use-ccm="true"> <connection-url>###### url de conexão ######</connection-url> <driver>oracle</driver> <security> <user-name>###### usuario ######</user-name> <password>###### senha ######</password> </security> </datasource> <datasource jndi-name="java:/CONEXAO_BANCO_2" pool-name="PaywaretDS_pool" enabled="true" use-java-context="true"> <connection-url>###### url de conexão ######</connection-url> <driver>oracle</driver> <security> <user-name>###### usuario ######</user-name> <password>###### senha ######</password> </security> </datasource> <drivers> <driver name="oracle" module="com.oracle.jdbc"> <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class> </driver> <driver name="h2" module="com.h2database.h2"> <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> </driver> </drivers> </datasources> [/quote]

Valeu amigo.
Sou bem cru mesmo.

Abraço.

[quote=Hebert Coelho][quote=dlsilva1812][quote=Hebert Coelho]1) Crie no arquivo persistence.xml um persistence unit para o Oracle
2) Configure tudo que for necessário dentro do persistence.xml
3) Verifique se em algum lugar é utilizado native query. se sim, você terá que migrar as consultas para o Oracle (caso dê mensagem de invalid sintax).
4) Pode ser que dê erro na hora de migrar a chave também, então você provavelmente terá que desligar a questão de chave de um lado para o outro durante a migração.
[/quote]

Muito obrigado caro Hebert, mas o projeto aqui é jsf1.2 e não possui o persistence.xml o processo todo é feito com DAO genérico, cria o objeto e insere.

Tentei fazer com 2 Hibernate-cfg.xml e duas HibernateSessions chamando a referente ao oracle, porém trava e não obtem a session.[/quote]
persistence.xml não tem nada haver com JSF, ele é configuração do JPA.

Se você tem o hibernate-cfg.xml é nele que tem que ficar suas configurações. Se não obtem a session algum erro deve estar acontecendo. Veja o seu log qual erro está aparecendo lá.[/quote]

Aí que está o problema, não aparece nada no log. Simplesmente a aplicação fica travada.

[quote=dlsilva1812][quote=Hebert Coelho][quote=dlsilva1812][quote=Hebert Coelho]1) Crie no arquivo persistence.xml um persistence unit para o Oracle
2) Configure tudo que for necessário dentro do persistence.xml
3) Verifique se em algum lugar é utilizado native query. se sim, você terá que migrar as consultas para o Oracle (caso dê mensagem de invalid sintax).
4) Pode ser que dê erro na hora de migrar a chave também, então você provavelmente terá que desligar a questão de chave de um lado para o outro durante a migração.
[/quote]

Muito obrigado caro Hebert, mas o projeto aqui é jsf1.2 e não possui o persistence.xml o processo todo é feito com DAO genérico, cria o objeto e insere.

Tentei fazer com 2 Hibernate-cfg.xml e duas HibernateSessions chamando a referente ao oracle, porém trava e não obtem a session.[/quote]
persistence.xml não tem nada haver com JSF, ele é configuração do JPA.

Se você tem o hibernate-cfg.xml é nele que tem que ficar suas configurações. Se não obtem a session algum erro deve estar acontecendo. Veja o seu log qual erro está aparecendo lá.[/quote]

Aí que está o problema, não aparece nada no log. Simplesmente a aplicação fica travada.
[/quote]
Provavelmente está tentando conectar ao DB. Verifique se a URL está certa, se o firewall ñ está te bloqueando, se usuário/senha estão corretos também.

[quote=Hebert Coelho][quote=dlsilva1812][quote=Hebert Coelho][quote=dlsilva1812][quote=Hebert Coelho]1) Crie no arquivo persistence.xml um persistence unit para o Oracle
2) Configure tudo que for necessário dentro do persistence.xml
3) Verifique se em algum lugar é utilizado native query. se sim, você terá que migrar as consultas para o Oracle (caso dê mensagem de invalid sintax).
4) Pode ser que dê erro na hora de migrar a chave também, então você provavelmente terá que desligar a questão de chave de um lado para o outro durante a migração.
[/quote]

Muito obrigado caro Hebert, mas o projeto aqui é jsf1.2 e não possui o persistence.xml o processo todo é feito com DAO genérico, cria o objeto e insere.

Tentei fazer com 2 Hibernate-cfg.xml e duas HibernateSessions chamando a referente ao oracle, porém trava e não obtem a session.[/quote]
persistence.xml não tem nada haver com JSF, ele é configuração do JPA.

Se você tem o hibernate-cfg.xml é nele que tem que ficar suas configurações. Se não obtem a session algum erro deve estar acontecendo. Veja o seu log qual erro está aparecendo lá.[/quote]

Aí que está o problema, não aparece nada no log. Simplesmente a aplicação fica travada.
[/quote]
Provavelmente está tentando conectar ao DB. Verifique se a URL está certa, se o firewall ñ está te bloqueando, se usuário/senha estão corretos também.[/quote]

Blza caro amigo, estou saindo agora para uma reunião, vou verificar na volta e posto aqui se deu certo ou errado.

Muito obrigado.

Abraço.