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.
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>
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.
MappedBy menyediakan beberapa tujuan penting:
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>
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!