Als ich das letzte Mal eine Oracle-Datenbank für das System erstellt habe, war die Strategie, den Primärschlüssel zu nutzen, SEQUENCE, und ich war damals sehr müde, weil ich nicht weiß, warum, oracle+sequence+trigger kann den Primärschlüsselwert beim Hinzufügen neuer Daten nicht erhalten.
Diesmal werde ich mich darauf konzentrieren, und es gibt zwei neue Probleme,
1。 Welche Winterschlafstrategie zur Erzeugung von Primärschlüsseln hat eine bessere Leistung;
2。 Primäre Schlüsselgenerierungsstrategien sollten idealerweise datenbankübergreifend erfolgen.
Jeder spricht über Performance, Oracle verwendet Sequenz, daher möchte der Primärschlüssel trotzdem auf diese Weise generiert werden.
Dann gibt es noch den Primärschlüssel, um die neuen Daten zurückzugeben
ursprünglich Wählen Sie eine Identität, Sequenz oder Hilo entsprechend den Fähigkeiten der zugrunde liegenden Datenbank;
Das heißt, der Primärschlüssel wird erzeugt, der durch den Winterschlaf ausgewählt wird.
Native und Denity sind beides Strategien zur Generierung von Datenbank-ID-Seriennummern: Native ist Hibernate wird automatisch ausgewählt und generiert, Identity ist selbstgewählt, Identity ist MySQL, SQL2000 und andere Datenbankgenerierungsmethoden, und es gibt auch eine Sequenz, nämlich Oracle und andere Generierungsmethoden. Im Allgemeinen wird Native automatisch von Hibernate ausgewählt
Für Datenbanken, die Identitätsfelder intern unterstützen (DB2, MySQL, Sybase und MS SQL), kannst du identity off verwenden Schlüsselwortgenerierung. Für Datenbanken, die intern Sequenzen unterstützen (DB2, Oracle, PostgreSQL, Interbase, McKoi und SAP). DB), kannst du eine Schlüsselwortgenerierung im Sequenzstil verwenden. Beide Ansätze erfordern zweimal das Einfügen eines neuen Objekts SQL-Abfragen.
Ich habe mehr Online-Informationen überprüft, ich weiß nicht, wo ich sie gefunden habe, diese Strategie, Primärschlüssel zu generieren, wenn es MySQL ist, wählt er auto_increment Methode zur Erzeugung des Primärschlüssels; Wenn es Oracle ist, wählt er die Sequenzmethode; Es ist nur so, dass man bei der Nutzung der Oracle-Datenbank ein hibernate_sequence erstellen muss, das von Hibernate reserviert ist und einen Fehler meldet, wenn man es nicht baut (getestet). |