Rumah >Java >javaTutorial >Bolehkah JPA Mengimbas Secara Automatik untuk Entiti Beranotasi dengan @Entity?

Bolehkah JPA Mengimbas Secara Automatik untuk Entiti Beranotasi dengan @Entity?

Patricia Arquette
Patricia Arquetteasal
2024-12-04 15:06:141112semak imbas

Can JPA Automatically Scan for Entities Annotated with @Entity?

Pengimbasan Entiti Automatik dalam kegigihan.xml

Dalam Java Persistence API (JPA), entiti biasanya diisytiharkan dalam deskriptor penggunaan persistence.xml menggunakan unsur. Walau bagaimanapun, adakah terdapat mekanisme untuk mengimbas entiti secara automatik beranotasi dengan @Entity?

Jawapannya adalah ya, tetapi dengan syarat dan pengehadan tertentu.

Menggunakan "jar-file " Elemen

Fail persistence.xml boleh termasuk elemen untuk menentukan fail JAR yang mengandungi kelas entiti. Pembekal JPA kemudiannya akan mengimbas fail JAR yang ditentukan untuk entiti. Ini ditakrifkan dalam spesifikasi JPA dan disokong oleh kebanyakan penyedia JPA, termasuk Hibernate.

Contoh:

<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>

Pengesanan Auto Khusus Hibernate (Java SE)

Dalam Hibernate khususnya, walaupun JPA spesifikasi tidak memerlukannya, pengesanan automatik entiti disokong walaupun dalam aplikasi Java SE. Untuk mendayakan ini, tambahkan sifat berikut pada unit kegigihan anda:

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

Ini membenarkan Hibernate mengimbas kelas yang dianotasi dengan @Entity dan untuk fail pemetaan Hibernate (.hbm.xml) dalam fail JAR yang ditentukan oleh elemen.

Penghadan

Adalah penting untuk ambil perhatian bahawa bergantung pada pengimbasan entiti automatik mungkin tidak selalu menjadi amalan terbaik. Dalam senario di mana keterlihatan laluan kelas adalah dinamik atau terdapat berbilang modul dengan definisi entiti yang bercanggah, penyenaraian kelas eksplisit boleh memberikan kawalan yang lebih baik.

Atas ialah kandungan terperinci Bolehkah JPA Mengimbas Secara Automatik untuk Entiti Beranotasi dengan @Entity?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn