Utilisation de l’annotation @GeneratedValue
logo Axopen

18+

années
d'expérience

60+

experts
techniques

150K

écoutes de notre podcast

Utilisation de l’annotation @GeneratedValue

Cet article va nous aider à comprendre l’utilisation de l’annotation @GenerateValue.

Saber
Mis à jour le 24 Janv 2024

Cet article va nous aider à comprendre l’utilisation de l’annotation @GenerateValue.

Cette annotation indique que la clé primaire est générée de façon automatique lors de l’insertion en base. Sans cette annotation, la valeur de l’identifiant de la clé primaire doit être affectée avant l’insertion en base.

Elle est utilisée avec une autre annotation @Id qui permet de mapper une clé primaire sur un champ unique.

Cette annotation possède plusieurs attributs : strategy, generator. Nous pouvons définir le mode de génération de la clé primaire à l’aide de l’attribut strategy.

Cet attribut peut prendre plusieurs valeurs :

Strategy = GenerationType.AUTO : La génération de la clé primaire est laissée à l’implémentation.  C’est Hibernate qui s’en charge et qui crée une séquence unique sur tout le schéma via la table hibernate_sequence.

Strategy = GenerationType. IDENTITY : La génération de la clé primaire se fera à partir d’une identité propre au SGBD. Il utilise un type de colonne spéciale à la base de données.

Exemple pour MySQLMoteur de gestion de base de données., il s’agit d’un AUTO_INCREMENT.

Strategy = GenerationType. TABLE : La génération de la clé primaire se fera en utilisant une table dédiée hibernate_sequence qui stocke les noms et les valeurs des séquences.

Cette stratégie doit être utilisée avec une autre annotation qui est @TableGenerator.

Exemple: {{< highlight java "linenos=table" >}} @GeneratedValue (strategy = GenerationType.TABLE, generator = "clientGenerator")

@TableGenerator (name = "clientGenerator", pkColumnName = "nom_colonne_pk", valueColumnName = "nom_colonne_valeur_pk", allocationSize = 1)

{{< / highlight >}}

Strategy = GenerationType. SEQUENCE : La génération de la clé primaire se fera par une séquence définie dans le SGBD, auquel on ajoutera l’attribut generator. Cette stratégie doit être utilisée avec une autre annotation qui est @SequenceGenerator. Cette annotation possède l’attribut name pour le nom du generator, l’attribut sequenceName pour le nom de la séquence et enfin allocationSize qui est l’incrémentation de la valeur de la séquence.

Exemple: {{< highlight java "linenos=table" >}} @GeneratedValue (strategy = GenerationType.SEQUENCE, generator = "enerator_client")

@SequenceGenerator (name = "generator_client", sequenceName = "WINDEV_SEQ", allocationSize = 1) {{< / highlight >}} Nous verrons ultérieurement comment utiliser d’autres annotations de mapping.

Pour aller plus loin

Comprendre les Méthodes Agiles et le Scrum dans le développement informatique

Très populaires dans le monde du développement web et de l’IT, les termes de "méthode agile” ou encore "scrum” font référence à des notions de gestion de projets qui s’opposent aux méthodes traditionnelles telles que le cycle en V ou la méthode en cascade. Mais quelles sont les différences entre l’agilité et le scrum ? Quels sont les avantages des méthodes agiles ? On va vous aider à y voir un peu plus clair dans cet article, notamment en mettant en avant les différences et les similarités entre l’agilité et le scrum. Nous vous donnerons également notre retour d’expérience sur le sujet en tant qu’entreprise de développement informatique. C’est parti !

Small right arrow

Nouveautés Angular 20 : ce qui change vraiment pour les développeurs

Comme tous les six mois, une nouvelle version du célèbre framework front-end JavaScript Angular fait son apparition. Cette fois, c’est Angular 20 qui débarque ! Un an après la publication de notre article sur Angular 18, on revient pour faire le point sur les nouveautés, les évolutions techniques et les impacts possibles sur vos projets.

Small right arrow

Comment utiliser SonarQube pour suivre et gérer la dette technique de vos projets ?

Dans cet article, nous allons explorer en détail comment utiliser SonarQube pour évaluer et améliorer la qualité de votre code, en mettant l'accent sur ses fonctionnalités clés telles que les profils qualité, les barrières qualité et l'intégration dans vos pipelines de développement. Découvrez comment SonarQube peut vous aider à maintenir un code de haute qualité et à éviter l'accumulation de dette technique.

Small right arrow