Rumah >pangkalan data >tutorial mysql >Bagaimanakah Anotasi `@Id` dan `@GeneratedValue(strategy = GenerationType.IDENTITY)` Berfungsi dalam JPA?

Bagaimanakah Anotasi `@Id` dan `@GeneratedValue(strategy = GenerationType.IDENTITY)` Berfungsi dalam JPA?

Susan Sarandon
Susan Sarandonasal
2025-01-05 17:27:44215semak imbas

How Do `@Id` and `@GeneratedValue(strategy = GenerationType.IDENTITY)` Annotations Work in JPA?

What Rolle Do the @Id dan @GeneratedValue(strategy = GenerationType.IDENTITY) Anotasi Dimainkan?

Anotasi dalam pengaturcaraan menyediakan cara yang mudah untuk mengkonfigurasi tingkah laku dan memudahkan kod kebolehbacaan. Dalam konteks Java Persistence API (JPA), dua anotasi yang biasa digunakan ialah @Id dan @GeneratedValue(strategy = GenerationType.IDENTITY). Mari kita mendalami kepentingannya:

@Anotasi Id: Pengecam Kunci Utama

Anotasi @Id menandakan medan sebagai kunci utama entiti. Ia memberitahu penyedia JPA bahawa medan yang ditetapkan memegang pengecam unik untuk setiap kejadian entiti. Dalam kebanyakan senario, medan beranotasi mengandungi kunci utama jadual yang sepadan dalam pangkalan data.

@GeneratedValue(strategy = GenerationType.IDENTITY) Anotasi: Auto-Increment ID Generation

The @GeneratedValue anotasi, dipasangkan dengan strategi GenerationType.IDENTITY, mengarahkan penyedia JPA untuk menggunakan mekanisme auto-kenaikan pangkalan data untuk menetapkan nilai kunci utama. Apabila menggunakan strategi ini, pembekal JPA secara automatik menjana nilai berurutan yang unik untuk medan beranotasi semasa penciptaan entiti.

Sebagai contoh, jika anda mempunyai jadual dalam MySQL dengan lajur kenaikan automatik bernama id, kod berikut akan memberikan ID integer unik secara automatik kepada kejadian kelas Pengarang:

@Entity
public class Author {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id") 
    private Integer id;
    
}

Jenis Penjanaan Alternatif Strategi

Selain GenerationType.IDENTITY, strategi lain seperti GenerationType.AUTO, GenerationType.SEQUENCE dan GenerationType.TABLE boleh digunakan dengan @GeneratedValue. Pilihan strategi bergantung pada pangkalan data dan keutamaan konfigurasi.

  • GenerationType.AUTO: Lalai kepada strategi yang disokong oleh pangkalan data yang dikonfigurasikan.
  • GenerationType.SEQUENCE: Menggunakan jujukan pangkalan data untuk jana nilai kunci utama.
  • GenerationType.JADUAL: Menggunakan jadual berasingan untuk mengurus nilai kunci utama.

Pelanjutan Kelas Domain: Tujuan dan Faedah

Melanjutkan kelas Domain abstrak membolehkan anda mewarisi kefungsian dan tingkah laku biasa untuk semua entiti domain dalam permohonan anda. Pendekatan ini menggalakkan kebolehgunaan semula kod, konsistensi dan pematuhan kepada seni bina yang ditetapkan. Faedah termasuk:

  • Pengesahan data terstandard dan pewarisan peraturan perniagaan.
  • Pemetaan kelas perkhidmatan satu titik untuk semua entiti domain.
  • Pengaturan dan kebolehselenggaraan kod yang dipertingkatkan.

Dengan memanfaatkan anotasi dan teknik abstrak ini, anda boleh memudahkan kegigihan entiti dan mengekalkan pengendalian data yang konsisten dalam aplikasi JPA anda.

Atas ialah kandungan terperinci Bagaimanakah Anotasi `@Id` dan `@GeneratedValue(strategy = GenerationType.IDENTITY)` Berfungsi dalam 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