Rumah >Java >javaTutorial >Apakah Perbezaan Antara `@JoinColumn` dan `@mappedBy` dalam Perhubungan JPA?
Menyingkap Perbezaan antara @JoinColumn dan @mappedBy dalam Perhubungan JPA
Dalam JPA, mengurus perhubungan antara entiti adalah penting untuk integriti dan pengambilan data . Dua anotasi, @JoinColumn dan @mappedBy, memainkan peranan yang berbeza dalam mewujudkan perhubungan ini.
@JoinColumn: Menunjukkan Pemilikan dan Lajur Kunci Asing
Anotasi @JoinColumn menandakan entiti sebagai pemilik perhubungan. Ini bermakna bahawa jadual yang sepadan akan mengandungi lajur dengan rujukan kunci asing kepada jadual yang dirujuk. Dalam contoh yang diberikan:
@OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY) @JoinColumn(name = "companyIdRef", referencedColumnName = "companyId") private List<Branch> branches;
Entiti Syarikat memiliki hubungan dengan entiti Cawangannya. Anotasi @JoinColumn menentukan bahawa lajur bernama "companyIdRef" dalam jadual Cawangan akan memegang kunci asing kepada lajur "companyId" dalam jadual Syarikat.
@mappedBy: Menunjukkan Hubungan Songsang dan Pemilik dalam Entiti Bertentangan
Sebaliknya, Atribut @mappedBy menandakan entiti sebagai songsang perhubungan. Nama atribut yang dinyatakan dalam @mappedBy hendaklah sepadan dengan nama harta dalam entiti lawan yang mewakili perhubungan dari perspektifnya.
Dalam contoh:
@OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY, mappedBy = "companyIdRef") private List<Branch> branches;
Atribut @mappedBy menunjukkan bahawa entiti Cawangan adalah songsang perhubungan berkenaan dengan entiti Syarikat. Memandangkan "companyIdRef" sepadan dengan nama harta dalam entiti Cawangan:
@ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "companyId") private Company company;
Akibat Penggunaan Anotasi
Kesimpulan
Memahami perbezaan antara @JoinColumn dan @mappedBy adalah penting untuk mewujudkan hubungan yang betul antara entiti JPA . Dengan menggunakan anotasi ini dengan sewajarnya, pembangun boleh mengekalkan integriti data dan menavigasi graf objek kompleks dengan lancar.
Atas ialah kandungan terperinci Apakah Perbezaan Antara `@JoinColumn` dan `@mappedBy` dalam Perhubungan JPA?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!