Rumah > Java > javaTutorial > JoinColumn vs. MappedBy: Bagaimana Memilih Anotasi JPA yang Betul untuk Hubungan Entiti?

JoinColumn vs. MappedBy: Bagaimana Memilih Anotasi JPA yang Betul untuk Hubungan Entiti?

DDD
Lepaskan: 2024-12-18 05:34:20
asal
971 orang telah melayarinya

JoinColumn vs. MappedBy: How to Choose the Right JPA Annotation for Entity Relationships?

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")
Salin selepas log masuk

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"
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan