Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menentukan Perhubungan dalam Hibernate 4 menggunakan Anotasi?

Bagaimana untuk Menentukan Perhubungan dalam Hibernate 4 menggunakan Anotasi?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 10:33:02308semak imbas

How to Define Relationships in Hibernate 4 using Annotations?

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!

Kenyataan:
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