Boa tarde,
Tenho uma plaicação que conecta 2 bancos diferentes e para cada tabela, necessito criar um entidade.
Estou tendo dificuldades para criar um arquivo de persistencia para cada banco com suas respectivas entidades. A única solução para isso, seria criar uma nova aplicação.
Será que existe algum maneira para que isso seja resolvido ?
Att,
Sim, basta criar duas persistence-units no mesmo persistence.xml.
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="PU1" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/DB</jta-data-source>
<class>Entidade1_do_PU1</class>
<class>Entidade2_do_PU1</class>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
<persistence-unit name="PU2" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/DB</jta-data-source>
<class>Entidade1_do_PU2</class>
<class>Entidade2_do_PU2</class>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
Você pode ter dois projetos, um para cada database. Um dos projetos você exporta como uma biblioteca jar, que pode ser usada pelo outro projeto (o projeto “principal”).
Boa tarde dev.rafael e Roger75,
Muito obrigado pela ajuda. Porém, não consegui o resultado esperado.
O problema ocorrido foi que fica aparecendo erros nos entidades da outra unidade de persistência. A aplicação não está consegindo identificar elas.
Teria algum forma de contornar este problema ?
Abs
[quote=paradiso]Boa tarde dev.rafael e Roger75,
Muito obrigado pela ajuda. Porém, não consegui o resultado esperado.
O problema ocorrido foi que fica aparecendo erros nos entidades da outra unidade de persistência. A aplicação não está consegindo identificar elas.
Teria algum forma de contornar este problema ?
Abs[/quote]
Então, se você usar dois projetos JPA, com um persistence.xml por projeto, é só colocar no Build Path do Eclipse, e também informar no classpath a referência para o outro jar.
Olá paradiso, conseguiu resolver seu problema??
Pois estou desenvolvendo um sistema que terá que acessar uma outra base de dados também. Gostaria de umas dicas pra fazer esta conexão ao outro BD.
Olá dev.rafael, seguindo seu exemplo apos declarar o outro PU dentro do persistence.xml, quais os outros passos que devo seguir para a criação da conexão e acesso as tabelas desse outro BD?
Grato a todos!
[]'s
Eu estou procurando uma solução para uma problema que ocorre quando se utliza várias UP. Quando eu informo qual as entidades pertencem UP_1 utlizando a tag , o EntityManagerFactory está criando as tabelas no banco da outra UP_2. Alguém tem alguma experiência com isso ?
Atenciosamente,
Jayro Rodrigues
Olá jayro, consegui resolver meu problema e acho que isso vai te ajudar!
Coloca após a declaração das tuas classes.
Esta declaração faz com que a PU veja somente as classe declaradas nela.
[]'s
@PersistenceContext(unitName = "SCG")
EntityManager em ;
Nao importa o que eu faça o meu em sempre é nulo!
To usando JSF2 + JPA , configurei o DS no Tomcat tudo certo.
meu server.xml no tomcat
<Context docBase="SCG" path="/SCG" reloadable="true" source="org.eclipse.jst.jee.server:SCG">
<Resource name="jdbc/OpsistDS" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@10.58.177.124:1521:opsistdb"
username="relatorio" password="relatorio" maxActive="40" maxIdle="10"
maxWait="-1"/>
meu persistence.xml
[code]
java:/jdbc/OpsistDS
br.com.SCG.bean.Recarga
br.com.SCG.bean.Comentario
br.com.SCG.bean.ARSAberta
true
</properties>
</persistence-unit>
[/code]
metodo DAO
[code]public class ARSAbertaDAO implements Serializable{
private static final long serialVersionUID = 2535568973259190396L;
@PersistenceContext(unitName = "SCG")
EntityManager em ;
public List<ARSAberta> listar() {
List<ARSAberta> arsabertas = null;
try {
EntityTransaction etx = em.getTransaction();
etx.begin();
Query query = em.createQuery("Select a from ARSAberta a where a.classificacaoChamado = 1");
List resultList = query.getResultList();
arsabertas = resultList;[/code]
alguma luz ?