Hallo zusammen,
ich glaube ich habe grade ein grosses Brett vorm Kopf:
Ich benutze seit einem Jahr Hibernate via JPA, also Spring konfiguriert und hab eigentlich alles, was geht über Annotations gelöst.
Ich hab also eine persistence.xml in der nur eine persistence-unit ohne sonst irgendwas steht und in Spring dann eine entityManagerFactory, passende dataSource, transactionManager und 1-n daos dazu konfiguriert.
Also org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean, org.springframework.orm.jpa.JpaTransactionManager, org.springframework.jdbc.datasource.DriverManagerDataSource
Dann habe ich Hibernate Annotations und das legt irgendwie beim Start die passenden Tabellen an.
Und da ist mein Problem, ich stelle nämlich grade fest, dass ich überhaupt nicht begriffen habe, woher das Hibernate-Annotations Paket, dass dies ja wohl tut, sich die Informationen holt, wo die Tabellen überhaupt hin sollen, DENN:
Jetzt habe ich ein neues Projekt in dem ich an zwei verscheidene Datenbanken muss.
Das ist auch soweit alles kein Problem, dazu habe ich mir einfach noch einen zweiten entityManager mit dataSource und passendem Testdao verzwirbelt und das scheint auch alles zu klappen.
NUR: Nun hat Hibernate irgendwie in BEIDEN Datenbanken sämtliche Tabellen für die annotierten POJOs angelegt und plötzlich wird mir klar, dass ich überhaupt nicht verstehe, wie zum Teufel es das überhaupt tut.
Mein Zeil ist einfach verschiedene POJOs in verschiedene Datenbanken zu packen. Das klappt ja auch, dafür habe ich ja die oben angesprochenen verdoppelten entityManager mit eigenständigen Daos.
Nur hätte ich gerne dann auch nur die passenden Tabellen in der passenden DB angelegt.
Kann mir irgendwer erklären, wie Hibernate-Annotations sich überhaupt die Information schnappt, in welcher Datenbank es Tabellen anlegen soll? Oder wie Spring das in Hibernate-Annotations reinflanscht, falls das die Erklärung ist?
Danke im Vorraus :)
Edit:
War ja klar, dass ich 5 Minuten später verstehe, was passiert: <property name="generateDdl" value="true" /> setGenerateDdl(boolean generateDdl) im HibernateJpaVendorAdapter von Spring erzeugt die Tabellen.
Bleibt aber immer noch die Frage, wie ich das sinnvoll eingrenzen kann, dass nicht jede für jede @Entity in jeder Persistence Unit eine Schema angelegt wird.
|