Ultima dată când am creat o bază de date Oracle pentru sistem, strategia de a folosi hibernate pentru a genera cheia primară a fost SEQUENCE, și m-am simțit foarte obosit atunci, pentru că nu știu de ce, oracle+sequence+trigger nu poate obține valoarea cheii primare când adaugă date noi.
De data aceasta mă voi concentra pe asta, și apar două probleme noi,
1。 Care strategie de hibernare pentru generarea cheilor primare are performanțe mai bune;
2。 Strategiile principale de generare a cheilor ar trebui, ideal, să fie cross-database.
Toată lumea vorbește despre performanță, oracolul folosește secvența, deci cheia principală vrea totuși să fie generată în acest mod.
Apoi există cheia primară pentru a returna noile date
Nativ Alege una dintre identități, secvență sau hilo, în funcție de capacitățile bazei de date subiacente;
Adică, cheia primară este generată, care este aleasă prin hibernare.
Native și Denity sunt ambele strategii de generare a numerelor de serie ale ID-ului bazei de date, Native is Hibernate este selectat și generat automat, Identity este auto-selectat, Identity este MySQL, SQL2000 și alte metode de generare a bazei de date, iar există și o secvență care este Oracle și alte metode de generare, în general, Native este selectat automat de Hibernate
Pentru bazele de date care suportă intern câmpuri de identitate (DB2, MySQL, Sybase și MS SQL), poți folosi identitatea dezactivată Generarea cuvintelor cheie. Pentru baze de date care suportă secvențe intern (DB2, Oracle, PostgreSQL, Interbase, McKoi și SAP). DB), poți folosi generarea de cuvinte cheie în stil secvențial. Ambele abordări necesită de două ori pentru inserarea unui obiect nou Interogări SQL.
Am verificat mai multe informații online, nu știu unde le-am văzut, această strategie de generare a cheilor primare, dacă este mysql, el va alege auto_increment mod de a genera cheia primară; Dacă este Oracle, el va alege metoda secvenței; Doar că atunci când folosești baza de date Oracle, trebuie să creezi un hibernate_sequence, care este rezervat de Hibernate, și va raporta o eroare dacă nu îl construiești (testat). |