Le site Doc API sont très claires à ce sujet.
Tous les générateurs mettent en œuvre l'interface org.hibernate.id.IdentifierGenerator. Il s'agit d'une interface très simple. Certaines applications peuvent choisir de fournir leurs propres implémentations spécialisées, cependant, Hibernate fournit une gamme d'implémentations intégrées. Les noms raccourcis des générateurs intégrés sont les suivants :
incrémenter
génère des identifiants de type long, short ou int qui sont uniques uniquement lorsqu'aucun autre processus n'insère de données dans la même table. Ne pas utiliser dans un cluster.
identité
supporte les colonnes d'identité dans DB2, MySQL, MS SQL Server, Sybase et HypersonicSQL. L'identifiant retourné est de type long, short ou int.
séquence
utilise une séquence dans DB2, PostgreSQL, Oracle, SAP DB, McKoi ou un générateur dans Interbase. L'identifiant retourné est de type long, short ou int.
hilo
utilise un algorithme hi/lo pour générer efficacement des identifiants de type long, short ou int, étant donné une table et une colonne (par défaut hibernate_unique_key et next_hi respectivement) comme source de valeurs hi. L'algorithme hi/lo génère des identifiants qui ne sont uniques que pour une base de données particulière.
seqhilo
utilise un algorithme hi/lo pour générer efficacement des identifiants de type long, short ou int, étant donné une séquence de base de données nommée.
uuid
utilise un algorithme UUID de 128 bits pour générer des identifiants de type chaîne de caractères qui sont uniques au sein d'un réseau (l'adresse IP est utilisée). L'UUID est codé comme une chaîne de 32 chiffres hexadécimaux.
guide
utilise une chaîne GUID générée par la base de données sur MS SQL Server et MySQL.
indigène
sélectionne l'identité, la séquence ou le hilo en fonction des capacités de la base de données sous-jacente.
assigné
permet à l'application d'attribuer un identifiant à l'objet avant l'appel de save(). C'est la stratégie par défaut si aucun élément n'est spécifié.
sélectionnez
récupère une clé primaire, attribuée par un déclencheur de base de données, en sélectionnant la ligne par une clé unique et en récupérant la valeur de la clé primaire.
étranger
utilise l'identifiant d'un autre objet associé. Elle est généralement utilisée en conjonction avec une association de clé primaire.
séquence-identité
une stratégie de génération de séquence spécialisée qui utilise une séquence de base de données pour la génération de la valeur réelle, mais qui la combine avec JDBC3 getGeneratedKeys pour renvoyer la valeur d'identifiant générée dans le cadre de l'exécution de l'instruction d'insertion. Cette stratégie n'est prise en charge que par les pilotes Oracle 10g destinés au JDK 1.4. Les commentaires sur ces instructions d'insertion sont désactivés en raison d'un bogue dans les pilotes Oracle.
Si vous construisez une application simple avec peu d'utilisateurs simultanés, vous pouvez opter pour incrément, identité, hilo etc. Ceux-ci sont simples à configurer et n'ont pas nécessité beaucoup de codage dans la base de données.
Vous devez choisir séquence ou guide en fonction de votre base de données. Celles-ci sont sûres et meilleures car le id
se produira à l'intérieur de la base de données.
Mise à jour : Récemment, nous avons eu un problème avec l'idendité où le type primitif (int) a été corrigé en utilisant le type warapper (Integer) à la place.