Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

MySql e Oracle Simultâneos

Estou tentando configurar meu standalone no wildfly para ter conexões simultâneas com um banco de dados Mysql e outro Oracle. Estou desenvolvento uma API que le um DB Oracle, captando informações e inserindo localmente eu um Mysql.... Porém sem sucesso até agora com o processo de configuração.

5 respostas

Marco,

você esta usando o Hibernate ??

Faltou este detalhe!! Sim estou usando Hibernate

Marco,

no curso de Hibernate https://cursos.alura.com.br/course/persistencia-de-objetos-com-jpa-hibernate

o professor da uma dica de como utilizar bancos de dados simultaneos. Basicamente, no seu persistence.xml, você precisa criar 2 persistence-unit. Por exemplo, 1 MySQL e outro PostgreSQL

<persistence-unit name="contas-mysql">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>br.com.caelum.financas.modelo.Conta</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/contas" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="" />

            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
        </properties>
    </persistence-unit>

    <persistence-unit name="contas-postgres">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>br.com.caelum.financas.modelo.Conta</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost/contas" />
            <property name="javax.persistence.jdbc.user" value="rafaelpbaptista" />
            <property name="javax.persistence.jdbc.password" value="" />

            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
        </properties>
    </persistence-unit>

na sua classe, você precisa criar 2 fabricas de EntityManager, um para cada persistence-unit

/**
         * Usando PostgreSQL
         */
         EntityManagerFactory emf = Persistence
                 .createEntityManagerFactory("contas-postgres");

        /**
         * Usando MySQL
         */
        EntityManagerFactory emf = Persistence
                .createEntityManagerFactory("contas-mysql");

e ai você cria os EntityManager necessários usando essas fábricas.

solução!

Olá Jefferson, obrigado pela sua resposta!

Sobre este curso, com dois DB MySql eu até consegui, porém, quando entra o Oracle na jogada é que o problema começa... Ai eu dei uma lida sobre uma questão de XA datasource...

resumindo, eu consegui da seguinte maneira... Para o Mysql eu criei um XA

<xa-datasource jndi-name="java:/MysqlXADS" pool-name="MysqlXADS" enabled="true" use-ccm="true">

Para o Oracle apenas um datasource

<datasource jta="true" jndi-name="java:jboss/datasources/pmsOracleDS" pool-name="pmsOracleDS" use-java-context="true">

Funcionou, porém, como sou novo com java fiz funcionar sem saber porque, ou seja, se outra vez tiver que fazer sozinho não saberei como!

Mesmo assim obrigado!

Beleza !!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software