JDBC: JoinColumn versus MappedBy
Dalam Java Persistence API (JPA), JoinColumn dan mappedBy ialah dua anotasi yang digunakan untuk menentukan hubungan antara entiti. Memahami perbezaan antara anotasi ini adalah penting untuk pemodelan data dan interaksi pangkalan data yang cekap.
JoinColumn: Ownership and Foreign Keys
Anotasi @JoinColumn menunjukkan bahawa entiti diberi anotasi dengan ia adalah pemilik perhubungan. Ini bermakna bahawa jadual yang sepadan mengekalkan lajur kunci asing yang merujuk kepada kunci utama jadual yang dirujuk. Sebagai contoh, dalam kod sampel yang disediakan:
@JoinColumn(name = "companyIdRef", referencedColumnName = "companyId")
Entiti Syarikat ialah pemilik perhubungan dengan entiti Cawangan. Lajur companyIdRef dalam jadual Cawangan akan berfungsi sebagai kunci asing yang merujuk kepada lajur companyId dalam jadual Syarikat.
MappedBy: Inverse Relationships
Sebaliknya, @mappedBy anotasi menandakan bahawa entiti yang dianotasi dengannya berada di bahagian songsang perhubungan. Pemilik perhubungan berada dalam entiti "lain", yang dirujuk oleh atribut mappedBy. Dalam senario ini:
@mappedBy = "companyIdRef"
Entiti Cawangan ialah songsang perhubungan dengan entiti Syarikat. Atribut companyIdRef dalam entiti Cawangan mewujudkan hubungan dua hala, membenarkan entiti Syarikat diakses daripada entiti Cawangan.
Anotasi Betul untuk Kod Contoh
Kepada mencapai hubungan dua hala sepenuhnya, anotasi yang betul untuk kod sampel akan be:
@Entity public class Company { @OneToMany(mappedBy = "company", orphanRemoval = true, fetch = FetchType.LAZY, cascade = CascadeType.ALL) private List<Branch> branches; } @Entity public class Branch { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "companyId") private Company company; }
Dengan menganotasi perhubungan dengan betul, anda boleh menavigasi dan memanipulasi data dengan berkesan antara entiti berkaitan dalam aplikasi Java anda.
Atas ialah kandungan terperinci JoinColumn vs. MappedBy: Bagaimana Memilih Anotasi JPA yang Betul untuk Hubungan Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!