Hubungan dalam JPA: Mencipta Entiti Tanpa Ketergantungan
Hubungan dalam JPA: Mencipta Entiti Tanpa Ketergantungan
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.
Jadual kandungan
- Konteks dan Masalah
- Pemodelan Entiti
-
Senario untuk Menyimpan Data
- Mencipta Pelajar tanpa Jadual Tesis
- Mengemaskini Pelajar untuk Mengaitkan dengan Jadual Tesis
- Kelebihan Menguruskan Perhubungan Di Sebelah Pelajar
- Alternatif: Menguruskan Hubungan di Sebelah Jadual Tesis
- Memilih Konfigurasi yang Tepat untuk Keperluan Anda
Konteks dan Masalah:
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.
- Masalah yang dihadapi: Dengan perhubungan dwiarah atau dikonfigurasikan dengan buruk, mencipta Pelajar mungkin gagal jika Jadual Tesis belum dibuat lagi, walaupun dengan anotasi nullable = true. Mari lihat cara menyelesaikannya dengan perhubungan satu arah.
Pemodelan Entiti
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.
Senario untuk Menyimpan Data
Mari lihat bagaimana persediaan ini diterjemahkan kepada pangkalan data dan cara data boleh disimpan melalui API.
Mencipta Pelajar tanpa Jadual Tesis
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:
Mengemas kini Pelajar untuk Mengaitkan dengan Jadual Tesis
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.
Kelebihan Menguruskan Perhubungan di pihak Pelajar:
- Fleksibiliti Penciptaan: Kami boleh mencipta Pelajar secara bebas daripada Jadual Tesis, membolehkan penciptaan entiti bebas.
- Kesederhanaan Struktur: Hubungan satu arah memudahkan interaksi, kerana ThesisSchedule tidak perlu mengetahui hubungan dengan Pelajar.
- Skalabiliti: Jika kemudian kami perlu menjadikan perhubungan ini dua hala, kami boleh mengemas kini kelas ThesisSchedule untuk memasukkan koleksi Pelajar.
Alternatif: Menguruskan Hubungan di Sebelah Jadual Tesis
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.
Pemodelan Entiti
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.
Kelebihan Menguruskan Hubungan di Pihak ThesisSchedule:
- Pemusatan Data: Semua maklumat tentang pelajar yang dikaitkan dengan jadual tesis dipusatkan dalam ThesisSchedule, menjadikannya lebih mudah untuk mengakses data yang berkaitan.
- Peningkatan Kawalan: ThesisSchedule boleh mengurus pelajarnya, memudahkan pengendalian kumpulan pelajar yang mengambil bahagian dalam jadual yang sama.
Memilih Konfigurasi yang Tepat untuk Keperluan Anda:
Kesimpulannya, sama ada untuk menguruskan perhubungan di sebelah Pelajar atau ThesisSchedule bergantung pada keperluan khusus permohonan anda:
- Hubungan Diuruskan oleh Pelajar: Gunakan persediaan ini jika anda ingin membuat pelajar secara bebas daripada jadual tesis dan secara pilihan memautkan jadual kepada pelajar kemudian.
- Hubungan Diuruskan oleh ThesisSchedule: Pilihan ini adalah lebih baik jika jadual tesis harus mengurus pelajarnya, menjadikannya teras perhubungan antara entiti.
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Penyelesaian untuk menukar nama kepada nombor untuk melaksanakan penyortiran dalam banyak senario aplikasi, pengguna mungkin perlu menyusun kumpulan, terutama dalam satu ...

Pemprosesan pemetaan medan dalam dok sistem sering menemui masalah yang sukar ketika melaksanakan sistem dok: bagaimana untuk memetakan medan antara muka sistem dengan berkesan ...

Mula musim bunga menggunakan versi IntelliJideaultimate ...

Apabila menggunakan Mybatis-Plus atau Rangka Kerja ORM yang lain untuk operasi pangkalan data, sering diperlukan untuk membina syarat pertanyaan berdasarkan nama atribut kelas entiti. Sekiranya anda secara manual setiap kali ...

Penukaran objek dan tatasusunan Java: Perbincangan mendalam tentang risiko dan kaedah penukaran jenis cast yang betul Banyak pemula Java akan menemui penukaran objek ke dalam array ...

Penjelasan terperinci mengenai reka bentuk jadual SKU dan SPU di platform e-dagang Artikel ini akan membincangkan isu reka bentuk pangkalan data SKU dan SPU dalam platform e-dagang, terutamanya bagaimana menangani jualan yang ditentukan pengguna ...

Bagaimanakah penyelesaian caching Redis menyedari keperluan senarai kedudukan produk? Semasa proses pembangunan, kita sering perlu menangani keperluan kedudukan, seperti memaparkan ...
