Sidste gang jeg lavede en Oracle-database til systemet, var strategien med at bruge dvale til at generere primærnøglen SEQUENCE, og jeg følte mig meget træt på det tidspunkt, fordi jeg ikke ved hvorfor, oracle+sequence+trigger kan ikke få primærnøgleværdien, når nye data tilføjes.
Denne gang vil jeg fokusere på dette, og der er to nye problemer,
1。 Hvilken dvalestrategi til generering af primærnøgler har bedre ydeevne;
2。 Primærnøglegenereringsstrategier bør ideelt set være på tværs af databaser.
Alle taler om performance, oracle bruger sekvens, så primærnøglen vil stadig genereres på denne måde.
Så er der primærnøglen til at returnere de nye data
indfødt Vælg en af identitet, sekvens eller hilo alt efter databasens kapaciteter;
Det vil sige, primærnøglen genereres, som vælges ved dvale.
Native og Denity er begge strategier for generering af database-ID serienumre; Native er Hibernate vælges og genereres automatisk, Identity er selvvalgt, Identity er MySQL, SQL2000 og andre databasegenereringsmetoder, og der er også en sekvens, der er Oracle og andre genereringsmetoder; generelt vælges Native automatisk af Hibernate
For databaser, der understøtter identitetsfelter internt (DB2, MySQL, Sybase og MS SQL), kan du bruge identitet fra Nøgleordgenerering. For databaser, der understøtter sekvenser internt (DB2, Oracle, PostgreSQL, Interbase, McKoi og SAP). DB), kan du bruge sekvensbaseret nøgleordgenerering. Begge tilgange kræver to gange for at indsætte et nyt objekt SQL-forespørgsler.
Jeg tjekkede mere information online, jeg ved ikke, hvor jeg fandt det, denne strategi med at generere primærnøgler, hvis det er mysql, vælger han auto_increment måde at generere primærnøglen på; Hvis det er Oracle, vælger han sekvensmetoden; Det er bare sådan, at når du bruger Oracle-databasen, skal du oprette en hibernate_sequence, som er reserveret af Hibernate, og som vil rapportere en fejl, hvis du ikke bygger den (tester). |