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

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

DDD
Lepaskan: 2024-12-28 00:07:09
asal
842 orang telah melayarinya

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

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

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

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