Sist jeg laget en Oracle-database for systemet, var strategien med å bruke dvale for å generere primærnøkkelen SEQUENCE, og jeg følte meg veldig sliten da, fordi jeg ikke vet hvorfor, oracle+sekvens+trigger kan ikke hente primærnøkkelverdien når ny data legges til.
Denne gangen vil jeg fokusere på dette, og det er to nye problemer,
1。 Hvilken dvalestrategi for å generere primærnøkler har bedre ytelse;
2。 Primærnøkkelgenereringsstrategier bør ideelt sett være på tvers av databaser.
Alle snakker om performance, oraklet bruker sekvens, så primærnøkkelen vil fortsatt genereres på denne måten.
Så er det primærnøkkelen for å returnere de nye dataene
innfødt Velg en av identitet, sekvens eller hilo basert på kapasitetene til den underliggende databasen;
Det vil si at primærnøkkelen genereres, som velges av dvale.
Native og Denity er begge strategier for serienummergenerering av database-ID, Native er Hibernate velges og genereres automatisk, Identity er selvvalgt, Identity er MySQL, SQL2000 og andre databasegenereringsmetoder, og det finnes også en sekvens som er Oracle og andre genereringsmetoder, generelt sett, Native velges automatisk av Hibernate
For databaser som støtter identitetsfelt internt (DB2, MySQL, Sybase og MS SQL), kan du bruke identitet av Nøkkelordgenerering. For databaser som støtter sekvenser internt (DB2, Oracle, PostgreSQL, Interbase, McKoi og SAP). DB), kan du bruke sekvensbasert nøkkelordgenerering. Begge tilnærmingene krever to ganger for å sette inn et nytt objekt SQL-spørringer.
Jeg sjekket mer informasjon på nettet, jeg vet ikke hvor jeg fant det, denne strategien med å generere primærnøkler, hvis det er mysql, vil han velge auto_increment måte å generere primærnøkkelen på; Hvis det er Oracle, velger han sekvensmetoden; Det er bare det at når du bruker Oracle-databasen, må du opprette en hibernate_sequence, som er reservert av Hibernate, og vil rapportere en feil hvis du ikke bygger den (testet). |