Menganotasi Perhubungan dalam Hibernate 4
Dalam Hibernate 4 dan Spring, anda boleh mentakrifkan pelbagai perhubungan antara kelas menggunakan anotasi. Berikut menggariskan cara untuk mencipta hubungan satu-dengan-satu, satu-dengan-banyak, banyak-dengan-satu dan banyak-ke-banyak:
Hubungan Satu-dengan-Satu arah satu :
- Gunakan @OneToOne pada kelas pemilikan (kunci utama kelas pemilikan merujuk kepada kelas lain).
- Tiada pemetaan sepadan diperlukan pada kelas lain.
Hubungan Satu-dengan-Satu dua hala:
- Gunakan @OneToOne(mappedBy = "bar") pada kelas pemilikan untuk menunjukkan perhubungan diuruskan oleh kelas yang satu lagi.
- Gunakan @OneToOne pada kelas yang satu lagi dengan dipetakanDengan menunjuk ke kelas yang memiliki.
Perhubungan Satu-dengan-Banyak Sehala Menggunakan Jadual Sertai Terurus Pengguna:
- Gunakan @OneToMany pada kelas pemilikan.
- Gunakan @JoinTable untuk mentakrifkan jadual gabungan antara entiti.
- Tidak pemetaan diperlukan pada kelas yang lain.
Perhubungan Satu-dengan-Banyak Dwiarah Menggunakan Pemetaan Kunci Asing:
- Gunakan @OneToMany(mappedBy = "bar") pada kelas pemilikan.
- Gunakan @ManyToOne pada kelas lain dengan dipetakanDengan menunjuk ke kelas pemilikan.
Dua arah Banyak-ke- Ramai Menggunakan Jadual Sertaan Terurus Hibernate:
- Gunakan @OneToMany pada kedua-dua kelas untuk mencipta perhubungan rujukan kendiri.
- Gunakan @JoinTable untuk mentakrifkan jadual gabungan.
Many-to-Many dwiarah Menggunakan Objek Gabungan Terurus Pengguna:
- Gunakan @OneToMany pada kedua-dua kelas untuk mencipta hubungan rujukan kendiri .
- Tentukan kelas yang berasingan sebagai objek jadual gabungan.
Menentukan Sisi "Memiliki" Perhubungan Dwiarah:
- Lazimnya, kelas yang mempunyai koleksi kelas lain dianggap sebagai bahagian "memiliki".
- Ini menentukan tempat kunci asing disimpan dan kelas mana yang menguruskan perubahan.
Memilih FetchType
- Lazy fetching (lalai) memuatkan objek yang berkaitan hanya apabila diperlukan.
- Eager fetching (set fetchType = FetchType.EAGER) memuatkan objek berkaitan serta-merta.
Elakkan LazyInitializationException dengan Menggunakan Hibernate.initialize() atau FetchMode:
- Gunakan Hibernate.initialize(person.getRoles() ); untuk tidak sabar-sabar memuatkan koleksi yang diambil secara malas.
- Gunakan setFetchMode("roles", FetchMode.SUBSELECT) pada kriteria untuk tidak sabar-sabar memuatkan koleksi.
Menentukan Arah Lata:
- Gunakan lata untuk menentukan lata operasi (cipta, kemas kini, padam) antara entiti yang berkaitan.
- Tetapkan lata kedua-dua arah jika perlu, tetapi hanya jika ia masuk akal dari segi semantik.
Yatim piatu Pembuangan:
- Dayakan orphanRemoval pada @OneToMany untuk memadamkan entiti yatim piatu (entiti yang tidak lagi dirujuk) secara automatik.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Perhubungan dalam Hibernate 4 menggunakan Anotasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!