
Cet article va nous aider à comprendre l’utilisation de l’annotation @GenerateValue.
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.
Comment optimiser ses requêtes SQL lorsqu’on est développeur d’applications web ? S’il y a bien une chose qui reste constante dans le développement informatique, c’est que toutes les applications manipulant des données structurées utilisent le SQL. Cette couche est indispensable dès que vous avez besoin de stocker et d’accéder à des données. Ainsi, peu importe le langage ou le framework que vous choisissez pour votre projet, SQL sera toujours présent. Lors des audits de performance que nous effectuons, les principales problématiques que nous rencontrons proviennent d’une mauvaise utilisation des bases de données par les applications. Il est donc crucial de bien maîtriser les principes d’optimisation SQL pour garantir des performances pérennes. Aujourd’hui, nous allons explorer ces différentes optimisations SQL, en particulier dans le cadre du développement d’applications web.
Zoom sur Elastic Fleet, le système permettant littéralement de gérer une flotte de serveurs. Elle permet le déploiement des plugins de façon unifiées et maintenable via la plateforme Kibana et notre avis sur cette mise à jour !
Découvrez comment créer un bot Discord en JavaScript étape par étape. Apprenez à structurer votre projet et à développer des fonctionnalités engageantes.