Heim >Java >javaLernprogramm >Kann JPA automatisch nach mit @Entity annotierten Entitäten suchen?

Kann JPA automatisch nach mit @Entity annotierten Entitäten suchen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-04 15:06:141057Durchsuche

Can JPA Automatically Scan for Entities Annotated with @Entity?

Automatisches Entity-Scannen in persistence.xml

In der Java Persistence API (JPA) werden Entitäten normalerweise im Bereitstellungsdeskriptor persistence.xml deklariert mit der Element. Gibt es jedoch einen Mechanismus, um stattdessen automatisch nach Entitäten zu suchen, die mit @Entity annotiert sind?

Die Antwort ist ja, aber mit bestimmten Bedingungen und Einschränkungen.

Verwendung der „jar-Datei“. " Element

Die Datei persistence.xml kann eine enthalten. -Element, um die JAR-Datei(en) anzugeben, die die Entitätsklassen enthalten. Der JPA-Anbieter durchsucht dann die angegebenen JAR-Dateien nach Entitäten. Dies ist in der JPA-Spezifikation definiert und wird von den meisten JPA-Anbietern, einschließlich Hibernate, unterstützt.

Beispiel:

<persistence>
    <persistence-unit name="eventractor" transaction-type="RESOURCE_LOCAL">
        <jar-file>MyEventractor.jar</jar-file>
        <!-- Explicit listing of entity classes is still allowed -->
        <class>pl.michalmech.eventractor.domain.User</class>
        <class>pl.michalmech.eventractor.domain.Address</class>
        <class>pl.michalmech.eventractor.domain.City</class>
        <class>pl.michalmech.eventractor.domain.Country</class>

        <properties>
            <property name="hibernate.hbm2ddl.auto" value="validate" />
            <property name="hibernate.show_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>

Hibernate-spezifische automatische Erkennung (Java SE)

Speziell im Ruhezustand, auch wenn die JPA-Spezifikation dies nicht erfordert Damit wird die automatische Erkennung von Entitäten auch in Java SE-Anwendungen unterstützt. Um dies zu aktivieren, fügen Sie die folgende Eigenschaft zu Ihrer Persistenzeinheit hinzu:

<property name="hibernate.archive.autodetection" value="class, hbm" />

Dadurch kann Hibernate nach mit @Entity annotierten Klassen und nach Hibernate-Zuordnungsdateien (.hbm.xml) in der von angegebenen JAR-Datei suchen die Element.

Einschränkungen

Es ist wichtig zu beachten, dass die Verwendung des automatischen Entitätsscans möglicherweise nicht immer die beste Vorgehensweise ist. In Szenarien, in denen die Sichtbarkeit des Klassenpfads dynamisch ist oder mehrere Module mit widersprüchlichen Entitätsdefinitionen vorhanden sind, kann eine explizite Klassenauflistung eine bessere Kontrolle bieten.

Das obige ist der detaillierte Inhalt vonKann JPA automatisch nach mit @Entity annotierten Entitäten suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn