Rumah >Java >javaTutorial >Apakah Perbezaan Antara `@JoinColumn` dan `@mappedBy` dalam Perhubungan JPA?

Apakah Perbezaan Antara `@JoinColumn` dan `@mappedBy` dalam Perhubungan JPA?

DDD
DDDasal
2024-12-28 00:07:09816semak imbas

What's the Difference Between `@JoinColumn` and `@mappedBy` in JPA Relationships?

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

  • @JoinColumn: Entiti yang dianotasi dengan @JoinColumn memiliki hubungan, bermakna ia mengawal kunci asing lajur.
  • @mappedBy: Entiti yang dianotasi dengan @mappedBy ialah songsang perhubungan dan pemiliknya diisytiharkan dalam entiti lawan. Akses dua arah tersedia melalui kedua-dua entiti.

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!

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