Terakhir kali saya membuat database Oracle untuk sistem, strategi menggunakan hibernasi untuk menghasilkan kunci utama adalah SEQUENCE, dan saya merasa sangat lelah pada saat itu, karena saya tidak tahu mengapa, oracle+sequence+trigger tidak bisa mendapatkan nilai kunci primer saat menambahkan data baru.
Kali ini saya akan fokus pada ini, dan ada dua masalah baru,
1。 Strategi hibernasi mana untuk menghasilkan kunci primer yang memiliki performa yang lebih baik;
2。 Strategi pembuatan kunci utama idealnya adalah lintas database.
Semua orang berbicara tentang kinerja, oracle menggunakan urutan, jadi kunci primer masih ingin dihasilkan dengan cara ini.
Lalu ada kunci utama untuk mengembalikan data baru
asli Pilih salah satu identitas, urutan, atau hilo sesuai dengan kemampuan database yang mendasarinya;
Artinya, kunci primer dihasilkan, yang dipilih dengan hibernasi.
Native dan Denity keduanya adalah strategi pembuatan nomor seri ID database, Native is Hibernate secara otomatis dipilih dan dihasilkan, Identity dipilih sendiri, Identity adalah MySQL, SQL2000 dan metode pembuatan database lainnya, dan ada juga urutan yaitu Oracle dan metode pembuatan lainnya, secara umum, Native secara otomatis dipilih oleh Hibernate
Untuk database yang mendukung bidang identitas secara internal (DB2, MySQL, Sybase, dan MS SQL), Anda dapat menggunakan identitas nonaktif Pembuatan kata kunci. Untuk database yang mendukung urutan secara internal (DB2, Oracle, PostgreSQL, Interbase, McKoi, dan SAP). DB), Anda dapat menggunakan pembuatan kata kunci gaya urutan. Kedua pendekatan membutuhkan dua kali untuk menyisipkan objek baru Kueri SQL.
Saya memeriksa lebih banyak informasi online, saya tidak tahu di mana saya melihatnya, strategi menghasilkan kunci primer ini, jika itu mysql, dia akan memilih cara auto_increment untuk menghasilkan kunci primer; Jika itu adalah Oracle, dia akan memilih metode urutan; Hanya saja ketika menggunakan database Oracle, Anda perlu membuat hibernate_sequence, yang dicadangkan oleh Hibernate, dan akan melaporkan kesalahan jika Anda tidak membangunnya (diuji). |