Wie Entitäten automatisch mit OpenJPA erkennen?
-
28-09-2019 - |
Frage
Ich suche nach einer Entitätsnachweis in OpenJPA. Das brauche ich nicht alle Entitäten in der persistence.xml zu erklären.
Edit: Es tut mir leid, ich habe vergessen zu sagen, dass ich ein Java-se App zu entwickeln.
Lösung
Lesen Sie die Persistent Klassenliste Abschnitt in die Bedienungsanleitung.
Im Gegensatz zu vielen ORM Produkte, OpenJPA tut nicht brauchen, um über alle Ihre wissen persistente Klassen beim Start. OpenJPA entdeckt neue persistente Klassen automatisch, wenn sie geladen werden, in die JVM; neu in der Tat kann man einführen persistente Klassen in Laufen Anwendungen unter OpenJPA.
- Hinweis: Es gibt ein paar Einschränkungen, die in der Bedienungsanleitung dokumentiert sind, aber ich verließ die heraus diesen Beitrag kurz zu halten.
Andere Tipps
Pro die JPA-Spezifikation, müssen Sie alle Klassen Liste explizit in einer Java-SE-Umgebung:
6.2.1.6 Mapping-Datei, jar-Datei, Klasse, exclude-nicht angegeben Klassen
(...)
Eine Liste mit dem Namen Managed Persistence Klassen können stattdessen auch angegeben werden die JAR-Dateien von oder zusätzlich zu, und Mapping-Dateien. jede Zuordnung Metadaten Anmerkungen gefunden auf diesem Klassen werden verarbeitet, oder sie werden wird unter Verwendung der Abbildungs ??kartiert Anmerkung Standardwerte. Die Klasse Element wird verwendet, um eine verwaltete Persistenz zur Liste Klasse. Eine Liste aller Namen verwaltet Persistenz-Klassen müssen angegeben werden in Java SE-Umgebungen, um sicherzustellen, Portabilität. Mobile Java SE Anwendungen sollten nicht auf die verlassen andere Mechanismen beschrieben hier geben Sie die Managed Persistence Klassen einer Persistenzeinheit. Persistence Provider kann auch verlangen, dass die Menge der Entitätsklassen und Klassen, die sein verwaltet werden sollen, müssen vollständig in jede der aufgezählten
persistence.xml
Dateien in Java SE Umgebungen.enthalten sind alle Klassen in der Wurzel die Persistenzeinheit werden auch gesucht für kommentierten Managed Persistence Klassen und jede Zuordnung von Metadaten Anmerkungen auf ihnen gefunden wird verarbeitet werden, oder werden sie abgebildet werden Verwenden der Abbildung Annotations Standardwerte. Wenn es nicht, dass die beabsichtigten Ausdauer Klassen kommentierten in der Wurzel des enthaltenen Persistenzeinheit in die aufgenommen werden Persistenzeinheit, die
exclude-unlisted-classes
Element sollte benutzt werden. Dasexclude-unlisted-classes
Element ist in Java SE nicht für den Gebrauch Umgebungen.
Nun, wenn Sie nichts dagegen haben nicht tragbar sein, könnten Sie eine Anbieter-Erweiterung verwenden, aber ich kann nicht so etwas wie Hibernate hibernate.archive.autodetection
Immobilien in OpenJPA finden.
Mit Spring JPA Integration (der flexibleren classpath Scannen ermöglicht) ist eine weitere Option.
Es gibt auch die JPA-Plugin, das dies für Sie tun kann. Die neueste Version ist in Maven Zentrale nicht zur Verfügung, so dass Sie Klon haben und bauen sich selbst.