Jak uzyskać dostęp do dwóch różnych baz danych?

0

Witam
Niby prosta rzecz a strasznie się z nią męczę. Mam dwie bazy danych, chcę mieć do nich dostęp. Tworzę klasy JPA z poziomu Eclipse: wybieram JPA Tools->Generate Entities from Tables i następnie wybieram bazę danych z której mają zostać zaimportowane tabele. Jednak ten sposób możliwy jest tylko dla jednej bazy danych (chyba że coś źle robię, gdyż jak chcę dodać kolejną bazę danych, to klasy JPA wcześniej zaimportowane zaczynają "świecić na czerwony" sygnalizując błąd). Jak należy to rozwiązać? Bardzo proszę o radę!
Pozdrawiam

0

Nie wiem czy do konca rozumiem, ale wydaje misie ze musisz miec w persistence.xml 2 persitenceUnits, jedna dla 1. bazy, druga dla 2.
Z tego co pamietam kiedys w Dali (plugin do JPA w Eclipse) bylo ograniczenie do jednej PU na persistence.xml - ale nie wiem czy dalej obowiazuje, oraz czy w ogole Dali jest nadal uzywane.

0

Gdy wpisałem do persistence.xml nową sekcję persistence-unit to niestety nic nie dało

Multiple persistence units defined - only the first persistence unit will be recognized

a skoro nie można wprowadzić persistence-unit to nie można wprowadzić też nowego źródła <jta-data-source>

0
<persistence>

    <persistence-unit name=" MyMobilePersistentUnit">
        <provider>       oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
      </provider>

      <jta-data-source>jdbc/sample</jta-data-source>
<class>  com.javabeat.ejb30.persistence.entities.mobile.MobileEntity
</class>
 <properties>
          <property name="toplink.ddl-generation" value="drop-and-create-tables">
         </property>
      </properties>
   </persistence-unit>

    <persistence-unit name=" MyOtherPersistentUnit">
      <provider>
        org.hibernate.ejb.HibernatePersistence
      </provider>
      <jta-data-source>jdbc/sample2</jta-data-source>
 <class>   com.javabeat.ejb30.persistence.entities.mobile.OtherEntity
</class>
<properties>
          <property name="hibernate.hbm2ddl.auto" value="update">

         </property>
      </properties>
   </persistence-unit>

</persistence>

Nie da się? Oczywiście, że się da problem nie leży w specyfikacji JPA, ale w pluginach do IDE. Te nie radzą sobie z wieloma PU w ramach jednego xmla.

0

No przeciez wyraznie napisalem ze Dali czy cokolwiek tam teraz w Eclipse jest mialo ten problem. Warning ze tylko jedna PU zostanie rozpoznana to jedno, providerzy JPA maja obowiazek wspierac ich wiele i juz. Po prostu zmien IDE lub plugin na lepszy, lub olej - ja uzywam Eclipse, pisze wyrabany projekt w Java EE a nie uzywam zadnego z tych badziewii, nawet deployuje JRebelem poza eclipse. Zycie jest przyjemniejsze.

0

Radzę sobie po prostu stosując dwa projekty, każdy do osobnej bazy danych i w każdym metody które odnoszą się tylko do konkretnej bazy danych. To jest strasznie upierdliwe i myślałem że po prostu coś źle robię.
Eclipse + JPA widać nie jest idealne, ale łatwość w jakim importuje się tabele oraz tworzy relacje pomiędzy tabelami bazy danych jest niewątpliwym plusem tego IDE. Jak mam ponad 50 tabel w bazie to stworzenie relacji zajęło mi połowę mniej czasu niż bawienie się z adnotacjami, gdzie narobiłbym pewnie więcej błędów niż mniej ;-).

0

Tworzac projekt od zera raczej robi sie to metoda top-down, czyli modeluje sie klasy i relache, dodaje adnotacje, i generuje baze i ew. optymizuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0