Bagaimana untuk Menjana ID untuk Superclass Abstrak dalam Aplikasi Spring MVC Menggunakan Hibernate dan MySQL?

Linda Hamilton
Lepaskan: 2024-11-12 22:17:02
asal
834 orang telah melayarinya

How to Generate IDs for Abstract Superclasses in a Spring MVC Application Using Hibernate and MySQL?

Polymorphic Abstract Superclass dan MySQL Identity Generation

Dalam aplikasi Spring MVC yang menggunakan Hibernate dan MySQL, cabaran mengurus ID untuk superclass abstrak dan subkelas mereka timbul. GenerationType.IDENTITY tidak serasi dengan superclass abstrak dan MySQL tidak mempunyai sokongan untuk jujukan. Bagaimanakah isu ini boleh diselesaikan?

Pertama sekali, adalah penting untuk memahami had MySQL: ia tidak boleh menjana ID dan memasukkan rekod secara serentak. Hibernate, bagaimanapun, menjangkakan keupayaan ini semasa sisipan entiti.

Untuk menangani perkara ini, jadual "LAST_IDS" boleh dilaksanakan. Jadual ini menjejaki ID terakhir yang diberikan untuk setiap entiti yang berkaitan. Langkah berikut menggariskan proses untuk menjana dan meneruskan ID menggunakan pendekatan ini:

  1. Transaksi optimis baca yang dimulakan
  2. Pertanyaan ID maksimum: PILIH MAX(id_entiti) DARIPADA LAST_IDS
  3. Storan pembolehubah: Berikan ID maksimum kepada pembolehubah ($OldID).
  4. Pengiraan ID baharu: $NewID = $OldID 1 (atau lebih tinggi untuk mengunci pesimis).
  5. Optimis kemas kini: KEMASKINI LAST_IDS SET entity_id= $NewID WHERE entity_id= $OldID?
  6. Transaction commit: Commit the optimistic transaction.
  7. Serah tugas kepada entiti : Jika komit berjaya, tetapkan komit yang dihasilkan $NewID kepada entiti yang akan disimpan menggunakan setID().
  8. Sisipan hibernate: Hibernate melaksanakan operasi sisipan.

Dengan menggunakan pendekatan ini, penjanaan ID dan pengurusan menjadi serasi dengan superclass abstrak dan batasan MySQL. Perlu diperhatikan bahawa warisan dalam entiti Hibernate secara amnya hanya boleh digunakan apabila menyokong perhubungan warisan dalam pangkalan data, seperti PostgreSQL atau Oracle.

Atas ialah kandungan terperinci Bagaimana untuk Menjana ID untuk Superclass Abstrak dalam Aplikasi Spring MVC Menggunakan Hibernate dan MySQL?. 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