Rumah > Java > javaTutorial > teks badan

Bagaimanakah `MappedBy` dalam JPA dan Hibernate membantu mengurus perhubungan dua hala dan meningkatkan kesederhanaan skema pangkalan data?

Patricia Arquette
Lepaskan: 2024-11-03 13:01:30
asal
882 orang telah melayarinya

How does `MappedBy` in JPA and Hibernate help manage bidirectional relationships and improve database schema simplicity?

Memahami MappedBy dalam JPA dan Hibernate

MappedBy memainkan peranan penting dalam mengurus perhubungan dua hala dalam Java Persistence API (JPA) dan Hibernate untuk pemetaan hubungan objek. Ini ialah cara praktikal untuk memodelkan dan menavigasi perhubungan yang kompleks dalam konteks pangkalan data.

Penggunaan Disyorkan MappedBy

Dalam contoh khusus anda, di mana Syarikat Penerbangan memiliki banyak AirlineFlights, dan banyak AirlineFlights milik satu Syarikat Penerbangan , mappedBy digunakan untuk mengelakkan penyimpanan maklumat berulang. Memandangkan anda mahu AirlineFlights menjadi kelas yang dimiliki, anda menentukan atribut mappedBy dalam kelas Airline:

<code class="java">@OneToMany(fetch=FetchType.LAZY, cascade = {CascadeType.ALL})
@JoinColumn(name="IDAIRLINE")
public Set<AirlineFlight> getAirlineFlights() {
    return airlineFlights;
}</code>
Salin selepas log masuk

Parameter mappedBy dalam anotasi @OneToMany menentukan bahawa lajur IDAIRLINE dalam jadual AirlineFlights ialah kunci asing yang memetakan kembali ke kunci utama dalam jadual Syarikat Penerbangan. Dengan cara ini, apabila anda menanyakan objek Syarikat Penerbangan, anda juga boleh mengambil AirlineFlights yang berkaitan dengan mudah.

Tujuan MappedBy

MappedBy menyediakan beberapa tujuan penting:

  • Menghalang SQL Join daripada Mendua Maklumat: Tanpa mappedBy, gabungan antara Syarikat Penerbangan dan AirlineFlights akan mengandungi kedua-dua kunci utama IDAIRLINE dan kunci asing dalam jadual AirlineFlights. Ini boleh membawa kepada masalah pertindihan data dan prestasi.
  • Meningkatkan Kesederhanaan Skema Pangkalan Data: Dengan menggunakan mappedBy, anda memastikan bahawa hanya satu jadual mengandungi kunci asing, menghasilkan pangkalan data yang lebih ringkas dan normal. skema.
  • Menyokong Navigasi Dwi Arah: Ia membolehkan anda melintasi perhubungan dalam kedua-dua arah (dari Syarikat Penerbangan ke AirlineFlights dan sebaliknya) tanpa menulis pertanyaan penyertaan yang jelas.

Senario Khusus Anda

Dalam contoh anda, jadual AirplaneFlights mempunyai lajur IDAIRLINE sebagai kunci asing yang menghala ke jadual Syarikat Penerbangan, tetapi jadual Syarikat Penerbangan tidak mempunyai lajur IDAIRLINEFLIGHTS yang sepadan. Persediaan ini mencadangkan bahawa AirlineFlights ialah entiti pemilik, walaupun keperluan anda ialah mempunyai Syarikat Penerbangan sebagai pemilik.

Untuk menyelesaikan masalah ini, anda perlu melaraskan anotasi dengan sewajarnya. Anotasi @OneToMany pada airlineFlights hendaklah berpindah ke kelas AirlineFlight dan atribut mappedBy hendaklah merujuk kepada medan "memiliki" dalam kelas Syarikat Penerbangan:

<code class="java">@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="IDAIRLINE", nullable=false)
@MapsId
public Airline getAirline() {
    return airline;
}</code>
Salin selepas log masuk

Dengan menyatakan mappedBy dan @MapsId, anda menunjukkan bahawa kunci utama Syarikat Penerbangan (bukan kunci asing IDAIRLINE dalam AirlineFlights) digunakan untuk menentukan perhubungan. Ini akan memastikan bahawa Syarikat Penerbangan ialah entiti pemilik dan boleh diambil dengan penuh semangat atau malas mengikut keperluan.

Atas ialah kandungan terperinci Bagaimanakah `MappedBy` dalam JPA dan Hibernate membantu mengurus perhubungan dua hala dan meningkatkan kesederhanaan skema pangkalan data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan