La última vez que hice una base de datos Oracle para el sistema, la estrategia de usar hibernate para generar la clave primaria era SEQUENCE, y en ese momento me sentí muy cansado, porque no sé por qué, oracle+sequence+trigger no puede obtener el valor de clave primaria al añadir nuevos datos.
Esta vez me centraré en esto, y hay dos problemas nuevos,
1。 ¿Qué estrategia de hibernación para generar claves primarias tiene mejor rendimiento;
2。 Las estrategias principales de generación de claves deberían ser idealmente entre bases de datos.
Todo el mundo habla de rendimiento, Oracle usa secuencia, así que la clave primaria sigue queriendo generarse de esta manera.
Luego está la clave primaria para devolver los nuevos datos
Nativo Elige uno de identidad, secuencia o hilo según las capacidades de la base de datos subyacente;
Es decir, se genera la clave primaria, que se elige mediante hibernación.
Native y Denity son ambas estrategias de generación de números de serie con ID de base de datos, Native is Hibernate se selecciona y genera automáticamente, Identity se autoselecciona, Identity es MySQL, SQL2000 y otros métodos de generación de bases de datos, y también existe una secuencia que es Oracle y otros métodos de generación; en general, Native se selecciona automáticamente por Hibernate
Para bases de datos que soportan campos identidad internamente (DB2, MySQL, Sybase y MS SQL), puedes usar la identidad desactivada Generación de palabras clave. Para bases de datos que soportan secuencias internamente (DB2, Oracle, PostgreSQL, Interbase, McKoi y SAP). DB), puedes usar generación de palabras clave en secuencia. Ambos enfoques requieren dos veces para insertar un nuevo objeto Consultas SQL.
He consultado más información en internet, no sé dónde la vi, esta estrategia de generar claves primarias, si es mysql, él elegirá auto_increment forma de generar la clave primaria; Si es Oráculo, elegirá el método de secuencia; Es solo que al usar la base de datos de Oracle, necesitas crear un hibernate_sequence, que está reservado por Hibernate, y que reportará un error si no lo compilas (probado). |