Rumah > Java > javaTutorial > teks badan

Apakah peranan `mappedBy` dalam JPA dan Hibernate untuk mengurus perhubungan dua hala?

Patricia Arquette
Lepaskan: 2024-11-02 04:45:02
asal
527 orang telah melayarinya

What is the role of `mappedBy` in JPA and Hibernate for managing bi-directional relationships?

Memahami mappedBy dalam JPA dan Hibernate

Dalam Java Persistence API (JPA) dan Hibernate, mappedBy ialah anotasi penting yang memudahkan pengurusan hubungan dua hala antara entiti. Ia mempunyai dua tujuan utama:

1. Menunjukkan Sisi Songsang Perhubungan:

mappedBy mengenal pasti entiti yang tidak memiliki perhubungan itu. Ia menentukan harta dalam entiti itu harus digunakan untuk mengakses atribut berkaitan. Ini amat berguna dalam perhubungan dwiarah di mana kedua-dua entiti merujuk antara satu sama lain.

2. Menghapuskan Kekangan Kunci Asing:

Tidak seperti pendekatan tradisional untuk mencipta perhubungan utama asing, mappedBy membolehkan anda mentakrifkan perhubungan tanpa menambah lajur kunci asing secara fizikal. Sebaliknya, ia memanfaatkan kewujudan kunci asing sedia ada pada entiti lain.

Menggunakan mappedBy dalam Perhubungan Dwiarah:

Untuk menggambarkan penggunaan mappedBy, pertimbangkan contoh yang diberikan:

Airline.java:

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

AirlineFlight.java:

<code class="java">@Entity
@Table(name="AirlineFlight")
public class AirlineFlight {
    // ... Other fields ...
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "IDAIRLINE")
    private Airline airline;
}</code>
Salin selepas log masuk

Dalam ini contoh, Syarikat Penerbangan ialah entiti pemilik, kerana ia memiliki koleksi airlineFlights. Hubungan daripada Syarikat Penerbangan ke AirlineFlight adalah melalui hartanah airlineFlights.

Di pihak AirlineFlight, hartanah syarikat penerbangan dianotasi dengan @ManyToOne dan mappedBy = "airlineFlights". Ini menyatakan bahawa AirlineFlight ialah pihak bukan pemilik dalam perhubungan dan harta syarikat penerbangan dipetakan oleh hartanah airlineFlights dalam Syarikat Penerbangan.

Dalam skema pangkalan data yang disediakan, AirlineFlights mempunyai lajur IDAIRLINE sebagai kunci asing kepada Syarikat Penerbangan . Oleh itu, Airline sememangnya pemilik entiti airlineFlights.

Dengan menggunakan mappedBy, anda mewujudkan hubungan dwi-arah tanpa menambah lajur kunci asing tambahan pada AirlineFlight. Sebaliknya, JPA dan Hibernate akan memautkan entiti secara automatik berdasarkan pemetaan harta yang ditentukan.

Atas ialah kandungan terperinci Apakah peranan `mappedBy` dalam JPA dan Hibernate untuk mengurus perhubungan dua hala?. 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