La dernière fois que j’ai créé une base de données Oracle pour le système, la stratégie d’utiliser hibernate pour générer la clé primaire était SEQUENCE, et je me sentais très fatigué à ce moment-là, car je ne comprends pas pourquoi, oracle+sequence+trigger ne peut pas obtenir la valeur de clé primaire lors de l’ajout de nouvelles données.
Cette fois, je vais me concentrer là-dessus, et il y a deux nouveaux problèmes,
1。 Quelle stratégie d’hibernation pour générer les clés primaires offre de meilleures performances ;
2。 Les principales stratégies de génération de clés devraient idéalement être inter-bases de données.
Tout le monde parle de performance, Oracle utilise la séquence, donc la clé primaire doit toujours être générée de cette manière.
Ensuite, il y a la clé primaire pour retourner les nouvelles données
Natif Choisir une identité, une séquence ou un hilo selon les capacités de la base de données sous-jacente ;
C’est-à-dire que la clé primaire est générée, choisie par hibernation.
Native et Denity sont toutes deux des stratégies de génération de numéros de série avec identifiants de base de données, Native is Hibernate est automatiquement sélectionné et généré, Identity est auto-sélectionné, Identity est MySQL, SQL2000 et d’autres méthodes de génération de bases de données, et il existe aussi une séquence qu’Oracle et d’autres méthodes de génération ; de manière générale, Native est automatiquement sélectionnée par Hibernate
Pour les bases de données qui prennent en charge les champs d’identité en interne (DB2, MySQL, Sybase et MS SQL), vous pouvez utiliser l’identité désactivée Génération de mots-clés. Pour les bases de données qui prennent en charge les séquences en interne (DB2, Oracle, PostgreSQL, Interbase, McKoi et SAP). DB), vous pouvez utiliser la génération de mots-clés de type séquence. Les deux approches nécessitent deux fois pour insérer un nouvel objet Requêtes SQL.
J’ai vérifié plus d’informations en ligne, je ne sais pas où je l’ai vu, cette stratégie de génération de clés primaires, si c’est mysql, il choisira auto_increment façon de générer la clé primaire ; Si c’est Oracle, il choisira la méthode de la séquence ; C’est juste que lorsque vous utilisez Oracle Database, vous devez créer un hibernate_sequence, qui est réservé par Hibernate, et qui signalera une erreur si vous ne le construisez pas (testé). |