Rumah > Java > javaTutorial > Bagaimana untuk Memetakan Kunci Komposit dalam JPA dan Hibernate menggunakan @EmbeddedId vs. @IdClass?

Bagaimana untuk Memetakan Kunci Komposit dalam JPA dan Hibernate menggunakan @EmbeddedId vs. @IdClass?

Linda Hamilton
Lepaskan: 2024-12-05 03:24:17
asal
522 orang telah melayarinya

How to Map Composite Keys in JPA and Hibernate using @EmbeddedId vs. @IdClass?

Memetakan Kekunci Komposit dengan JPA dan Hibernate

Dalam kod yang disediakan, kunci komposit ditakrifkan untuk jadual Masa dengan levelStation dan confPathID sebagai komponennya. Untuk memetakan kunci komposit ini dalam JPA dan Hibernate, anda mempunyai dua pilihan: @EmbeddedId dan @IdClass.

Menggunakan @IdClass

Anotasi @IdClass membolehkan anda memetakan berbilang medan entiti untuk membentuk kunci primer komposit. Ini memerlukan penentuan kelas yang mewakili kunci utama. Dalam kes ini, kelas TimePK boleh ditakrifkan seperti berikut:

@IdClass(TimePK.class)
public class Time implements Serializable {
    // ...
}
Salin selepas log masuk

Di sini, TimePK ialah kelas berasingan yang mesti menentukan pembina no-arg, getter/setters untuk medan kunci utama dan sama dengan( ) dan kaedah hashCode().

Menggunakan @EmbeddedId

The Anotasi @EmbeddedId memetakan kelas terbenam kepada kunci utama entiti. Berbanding dengan @IdClass, pendekatan ini menggabungkan kelas entiti dan kelas kunci utama. Begini cara anda menggunakan @EmbeddedId:

@Entity
class Time implements Serializable {
    @EmbeddedId
    private TimePK timePK;
    // ...
}
Salin selepas log masuk

Dalam kes ini, TimePK ialah kelas dalaman entiti Time dan mesti juga mentakrifkan pembina no-arg, getter/setters untuk medan utama dan sama () dan kaedah hashCode().

Perbezaan Antara @IdClass dan @EmbeddedId

Perbezaan utama antara @IdClass dan @EmbeddedId ialah kesannya pada sintaks pertanyaan. Dengan @IdClass, anda akan mengakses medan kunci utama secara langsung melalui entiti, manakala dengan @EmbeddedId, anda akan mengaksesnya melalui pengambil pada kelas terbenam.

Apabila memilih antara keduanya, @EmbeddedId menyampaikan fakta bahawa kunci utama mempunyai identiti yang bermakna dalam model domain anda, manakala @IdClass mencadangkan bahawa kunci utama hanyalah gabungan medan yang mengenal pasti secara unik entiti.

Rujukan

  • Spesifikasi JPA 1.0:

    • Bahagian 2.1.4 "Kunci Utama dan Identiti Entiti"
    • Seksyen 9.1.14 "EmbeddedId Anotasi"
    • Bahagian 9.1.15 "Anotasi IdClass"

Atas ialah kandungan terperinci Bagaimana untuk Memetakan Kunci Komposit dalam JPA dan Hibernate menggunakan @EmbeddedId vs. @IdClass?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan