Wie kann ich Persistenzeinheiten aus verschiedenen JARs zusammenführen / erweitern?

9

Ich verwende JPA-Persistenz für meine Datenmodelle mit Eclipselink als Persistenzanbieter. Ich habe eine modulare Anwendung (OSGi) und eines der Module enthält das Standarddatenmodell und eine Persistenzeinheit, die automatisch alle Entitäten aus dem Paket enthält. Der Persistenzanbieter befindet sich in einem anderen Modul, das gut funktioniert.

Jetzt möchte ich, dass ein drittes Modul einige Entitäten zur Persistenzeinheit hinzufügt. Wie mache ich das? Ich fand diese Lösung , die spezifisch für Spring ist, die ich bin nicht verwenden. Die Zusammenfassung dieses Ansatzes besteht darin, einen Postprozessor zu schreiben, der sich in die Verarbeitung der Persistenzeinheit einklinkt und <class> -Einträge manuell aus den persistence.xml -Dateien zusammenführt.

Ist es möglich, Persistenzeinheiten zusammenzuführen? Kann jemand eine Abhilfe vorschlagen?

    
Hanno Fietz 31.07.2009, 10:16
quelle

2 Antworten

5

Erstens, hier ist ein Link auf Dynamic-JPA , das eine Möglichkeit bietet, Entitäten dynamisch zu aktualisieren. Ich würde diese Option zuerst erkunden.

Hier ist ein weiterer Link ( PDF ) von OSGi gibt es ein paar Top-Level-Diagramme, die sich mit der Persistenz beschäftigen, und die EntityManagerFactory, die nützlich sein könnte.

ein interessanter Ansatz , aber möglicherweise nicht verwandt

Hier finden Sie einen Link zu programmatischen Erstellen von Persistenzeinheiten ohne Verwendung einer persistence.xml-Datei (die Sie nicht wirklich tun können, aber die Antworten bieten einige Einblicke in das Problem). philk bietet einen Vorschlag zum Entfernen des Providers aus der Datei persistence.xml. Wenn Sie dieser Methode folgen, können Sie Ihre Entitäten möglicherweise zu einer bestimmten Persistenzeinheit kombinieren.

"Nun, in den guten alten Zeiten von Hibernate konnte ich einfach eine Sitzung erstellen und füge meine Klassen spontan hinzu. Scheint, dass es nie zu SUNs JPA gekommen ist Spezifikationen. Allerdings habe ich den Anbieter komplett aus dem Internet entfernt persistence.xml und übergebe es an EL mit den Eigenschaften des EMF. Dies scheint in Ordnung zu sein. In der Datei persistence.xml ist nur noch die Spezifikation übrig der Klassen. Ich denke, es wäre nicht schwer, die Methode zu enthüllen Dies analysiert den Klassennamen in EL und erstellt den ClassDescriptor dafür als eine öffentliche Methode des EL JPA Providers. "

Schließlich kommen wir zur hashischen Lösung, die bereits vorgeschlagen wurde, bearbeiten Sie einfach Ihre persistence.xml-Dateien nachträglich. Ich glaube, das würde funktionieren (obwohl ich es nicht ausprobiert habe), aber es ist definitiv eine Option.

    
Robert Greiner 06.08.2009, 21:16
quelle
0

Ich habe ein Setup, bei dem eine WAR-Datei die Datei persistence.xml enthält. Die hier bereits beschriebene Lösung sollte für JARs, WARs und EARs verwendbar sein. JPA 2.0: Hinzufügen von Entitätsklassen zu PersistenceUnit * aus verschiedenen Gläsern * automatisch

    
Jesper Tejlgaard 26.03.2014 15:17
quelle