Senast jag gjorde en Oracle-databas för systemet var strategin att använda viloläge för att generera primärnyckeln SEQUENCE, och jag kände mig väldigt trött då, för jag vet inte varför, oracle+sequence+trigger kan inte få primärnyckelvärdet när ny data läggs till.
Den här gången kommer jag att fokusera på detta, och det finns två nya problem,
1。 Vilken viloläge för att generera primärnycklar har bättre prestanda;
2。 Primära nyckelgenereringsstrategier bör idealiskt vara databastkorsande.
Alla pratar om performance, oraklet använder sekvens, så primärnyckeln vill fortfarande genereras på detta sätt.
Sedan finns primärnyckeln för att returnera den nya datan
Infödd Välj en av identitet, sekvens eller hilo beroende på databasens kapaciteter;
Det vill säga, primärnyckeln genereras, som väljs genom dvala.
Native och Denity är båda strategier för generering av databas-ID med serienummer, Native är Hibernate väljs och genereras automatiskt, Identity är självvalt, Identity är MySQL, SQL2000 och andra databasgenereringsmetoder, och det finns också en sekvens som är Oracle och andra genereringsmetoder, generellt sett väljs Native automatiskt av Hibernate
För databaser som stöder identitetsfält internt (DB2, MySQL, Sybase och MS SQL) kan du använda identitets-off Nyckelordsgenerering. För databaser som stöder sekvenser internt (DB2, Oracle, PostgreSQL, Interbase, McKoi och SAP). DB), kan du använda sekvensbaserad nyckelordsgenerering. Båda metoderna kräver två gånger för att infoga ett nytt objekt SQL-frågor.
Jag kollade mer information online, jag vet inte var jag hittade den, denna strategi att generera primärnycklar, om det är mysql väljer han auto_increment sätt att generera primärnyckeln; Om det är Oracle väljer han sekvensmetoden; Det är bara det att när du använder Oracle-databasen måste du skapa en hibernate_sequence, som är reserverad av Hibernate och rapporterar ett fel om du inte bygger den (testar). |