Da última vez que criei um banco de dados Oracle para o sistema, a estratégia de usar o hibernate para gerar a chave primária era SEQUENCE, e eu me sentia muito cansado na época, porque não sei por quê, oracle+sequence+trigger não consegue obter o valor da chave primária ao adicionar novos dados.
Desta vez vou focar nisso, e há dois novos problemas,
1。 Qual estratégia de hibernação para gerar chaves primárias tem melhor desempenho;
2。 As principais estratégias de geração de chaves deveriam idealmente ser entre bases de dados.
Todo mundo fala sobre desempenho, o oráculo usa sequência, então a chave primária ainda quer ser gerada dessa forma.
Depois, há a chave primária para retornar os novos dados
Nativo Escolha um de identidade, sequência ou hilo de acordo com as capacidades do banco de dados subjacente;
Ou seja, a chave primária é gerada, que é escolhida pelo hibernate.
Native e Denity são ambas estratégias de geração de números de série com ID de banco de dados, Native is Hibernate é automaticamente selecionado e gerado, Identity é auto-selecionado, Identity é MySQL, SQL2000 e outros métodos de geração de banco de dados, e também existe uma sequência que é Oracle e outros métodos de geração; de modo geral, Native é automaticamente selecionado pelo Hibernate
Para bancos de dados que suportam campos identidade internamente (DB2, MySQL, Sybase e MS SQL), você pode usar identidade desligada Geração de palavras-chave. Para bancos de dados que suportam sequências internamente (DB2, Oracle, PostgreSQL, Interbase, McKoi e SAP). DB), você pode usar geração de palavras-chave no estilo sequência. Ambas as abordagens exigem duas vezes para inserir um novo objeto Consultas SQL.
Verifiquei mais informações online, não sei onde vi, essa estratégia de gerar chaves primárias, se for mysql, ele escolhe auto_increment forma de gerar a chave primária; Se for Oráculo, ele escolherá o método de sequência; É só que, ao usar o banco de dados Oracle, você precisa criar um hibernate_sequence, que é reservado pelo Hibernate, e que reportará um erro se você não o compilar (testado). |