Rumah  >  Artikel  >  Java  >  Bagaimanakah `MappedBy` Memudahkan Hubungan Dwi Arah dalam JPA dan Hibernate?

Bagaimanakah `MappedBy` Memudahkan Hubungan Dwi Arah dalam JPA dan Hibernate?

DDD
DDDasal
2024-11-01 21:45:02875semak imbas

How Does `MappedBy` Facilitate Bidirectional Relationships in JPA and Hibernate?

Memahami MappedBy dalam JPA dan Hibernate

Dalam rangka kerja pemetaan perhubungan objek (ORM) seperti JPA dan Hibernate, MappedBy ialah anotasi yang berguna untuk mewujudkan hubungan dua hala antara kelas entiti. Anotasi ini digunakan dalam konteks perhubungan satu-dengan-banyak dan banyak-dengan-satu.

Penggunaan Disyorkan

Penggunaan MappedBy yang disyorkan adalah seperti berikut:

  • Hubungan Satu-dengan-Banyak: Dalam hubungan satu-dengan-banyak, bahagian "banyak" hubungan (sebelah dengan koleksi) harus mempunyai MappedBy anotasi. Anotasi ini menentukan nama medan dalam bahagian "satu" perhubungan yang memegang kekangan kunci asing.
  • Perhubungan Ramai-dengan-Satu: Dalam banyak-dengan-satu perhubungan, bahagian "satu" perhubungan (sebelah dengan objek rujukan tunggal) harus mempunyai anotasi MappedBy. Anotasi ini menentukan nama medan dalam bahagian "banyak" perhubungan yang memegang kekangan kunci asing.

Tujuan MappedBy

MappedBy berfungsi beberapa tujuan:

  • Perjalanan Dwi Arah: Dalam hubungan dwiarah, MappedBy membenarkan anda melintasi hubungan dalam kedua-dua arah tanpa memerlukan takrifan kunci asing yang jelas dalam kedua-dua jadual.
  • Pengoptimuman: Dengan menyatakan pemilikan perhubungan, MappedBy boleh mengoptimumkan prestasi pangkalan data dengan mengelakkan jadual gabungan yang tidak perlu atau kekangan kunci asing.

Contoh

Dalam contoh yang anda berikan, Syarikat Penerbangan yang memiliki banyak AirlineFlights dan AirlineFlights milik satu Syarikat Penerbangan, MappedBy hendaklah digunakan dalam kelas AirlineFlight seperti berikut:

<code class="java">@Entity
@Table(name="AirlineFlight")
public class AirlineFlight {
    // ... other attributes ...

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="IDAIRLINE", nullable=false)
    @MapsId
    private Airline airline;
    // ... other attributes ...
}</code>

Dalam contoh ini, @ Anotasi MapsId menunjukkan bahawa medan IDAIRLINE dalam AirlineFlight digunakan sebagai kekangan kunci asing kepada entiti Syarikat Penerbangan. Dengan menggunakan MappedBy di sini, anda boleh mewujudkan hubungan dua hala antara Syarikat Penerbangan dan AirlineFlight tanpa memerlukan kekangan kunci asing dalam kedua-dua jadual.

Atas ialah kandungan terperinci Bagaimanakah `MappedBy` Memudahkan Hubungan Dwi Arah dalam JPA dan Hibernate?. 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