Apabila membuat API bahagian belakang, adalah perkara biasa untuk bekerjasama dengan perhubungan entiti untuk menyusun data. Biasanya, dalam kursus atau tutorial, kami kebanyakannya melihat hubungan dua hala. Tetapi bagaimana jika anda mahu satu entiti wujud secara bebas daripada yang lain? Dalam artikel ini, kami akan meneroka cara menggunakan perhubungan satu arah dengan JPA/Hibernate untuk mencapai matlamat ini.
Bayangkan anda mempunyai dua entiti: Pelajar dan Jadual Tesis. Hubungan antara Pelajar dan Jadual Tesis ialah "banyak-dengan-satu", bermakna pelajar boleh dikaitkan dengan jadual tesis dan setiap jadual boleh merangkumi berbilang pelajar.
Dalam kes ini, matlamat kami adalah untuk membenarkan penciptaan Pelajar tanpa memerlukan Jadual Tesis ditakrifkan terlebih dahulu. Kebebasan ini berguna, contohnya, apabila menambahkan pelajar ke pangkalan data sebelum membuat jadual tesis.
Kami akan membuat kelas Pelajar dan Jadual Tesis menggunakan hubungan "banyak-dengan-satu" satu arah daripada Pelajar kepada Jadual Tesis.
Kod entiti pelajar:
Kod entiti ThesisShedule:
Di sini, kami mempunyai hubungan satu arah daripada Pelajar kepada Jadual Tesis, yang ditunjukkan oleh anotasi @ManyToOne dalam kelas Pelajar. Dengan menyatakan nullable = true, kami membenarkan Pelajar dibuat tanpa perlu dikaitkan dengan Jadual Tesis.
Mari lihat bagaimana persediaan ini diterjemahkan kepada pangkalan data dan cara data boleh disimpan melalui API.
Dengan persediaan ini, kami boleh mencipta pelajar tanpa menyediakan Jadual Tesis.
Permintaan POS untuk membuat Pelajar (tanpa Jadual Tesis):
Ini mencipta entri baharu dalam jadual Pelajar dengan nilai nol untuk lajur_id_jadual tesis.
Keputusan:
Setelah Jadual Tesis dibuat, kami boleh mengemas kini rekod Pelajar untuk dikaitkan dengannya.
Membuat Jadual Tesis:
Jadual Tesis yang baru dibuat ini mungkin mempunyai ID 1.
Mengemas kini pelajar dengan Jadual Tesis:
Keputusan:
Kini, Larose dikaitkan dengan Jadual Tesis yang baru dibuat.
Dalam sesetengah kes, mungkin lebih sesuai untuk menguruskan perhubungan dari sisi ThesisSchedule. Pendekatan ini berguna jika kita mahu jadual tesis mengurus pelajar yang berkaitan, menjejaki mereka yang mengambil bahagian dalam jadual tertentu.
Dalam persediaan ini, ThesisSchedule menyimpan koleksi Pelajar untuk mewakili hubungan "satu-dengan-banyak", manakala Pelajar tidak mengekalkan rujukan kepada ThesisSchedule.
Kod entiti Jadual Tesis:
Kod entiti pelajar:
Dalam konfigurasi ini, ThesisSchedule mengandungi senarai Pelajar melalui anotasi @OneToMany. Akibatnya, pelajar boleh ditambah atau dialih keluar daripada ThesisSchedule tanpa memerlukan pautan terus dalam Pelajar.
Kesimpulannya, sama ada untuk menguruskan perhubungan di sebelah Pelajar atau ThesisSchedule bergantung pada keperluan khusus permohonan anda:
Kedua-dua konfigurasi memberikan fleksibiliti dan membenarkan API bahagian belakang yang teratur berdasarkan perhubungan data yang diingini. Dengan menggunakan amalan terbaik untuk menstrukturkan perhubungan entiti, anda boleh memodelkan pangkalan data anda dengan berkesan untuk memenuhi keperluan khusus aplikasi anda.
Perhubungan satu arah ialah pilihan yang berkuasa untuk mengurus kebergantungan pilihan antara entiti dalam API bahagian belakang.
Saya harap penyelesaian ini membantu pembangun lain lebih memahami dan menggunakan perhubungan satu arah dalam JPA/Hibernate.
Atas ialah kandungan terperinci Hubungan dalam JPA: Mencipta Entiti Tanpa Ketergantungan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!