Maison > base de données > tutoriel mysql > Comment fonctionnent les annotations `@Id` et `@GeneratedValue(strategy = GenerationType.IDENTITY)` dans JPA ?

Comment fonctionnent les annotations `@Id` et `@GeneratedValue(strategy = GenerationType.IDENTITY)` dans JPA ?

Susan Sarandon
Libérer: 2025-01-05 17:27:44
original
203 Les gens l'ont consulté

How Do `@Id` and `@GeneratedValue(strategy = GenerationType.IDENTITY)` Annotations Work in JPA?

À quoi servent les annotations @Id et @GeneratedValue(strategy = GenerationType.IDENTITY) ?

Les annotations en programmation offrent un moyen pratique de configurer le comportement et de faciliter le code lisibilité. Dans le contexte de l'API Java Persistence (JPA), deux annotations couramment utilisées sont @Id et @GeneratedValue(strategy = GenerationType.IDENTITY). Examinons leur signification :

Annotation @Id : Identifiant de clé primaire

L'annotation @Id marque un champ comme clé primaire d'une entité. Il informe le fournisseur JPA que le champ désigné contient l'identifiant unique de chaque instance de l'entité. Dans la plupart des scénarios, le champ annoté contient la clé primaire de la table correspondante dans la base de données.

@GeneratedValue(strategy = GenerationType.IDENTITY) Annotation : génération d'ID à incrémentation automatique

La @GeneratedValue L'annotation, associée à la stratégie GenerationType.IDENTITY, demande au fournisseur JPA d'utiliser le mécanisme d'incrémentation automatique de la base de données pour attribuer des valeurs de clé primaire. Lors de l'utilisation de cette stratégie, le fournisseur JPA génère automatiquement des valeurs séquentielles uniques pour le champ annoté lors de la création de l'entité.

Par exemple, si vous avez une table dans MySQL avec une colonne à incrémentation automatique nommée id, le code suivant attribuera automatiquement des ID entiers uniques aux instances de la classe Author :

@Entity
public class Author {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id") 
    private Integer id;
    
}
Copier après la connexion

Stratégies alternatives de type de génération

En plus de GenerationType.IDENTITY, d'autres stratégies telles que GenerationType.AUTO, GenerationType.SEQUENCE et GenerationType.TABLE peuvent être utilisées avec @GeneratedValue. Le choix de la stratégie dépend de la base de données et des préférences de configuration.

  • GenerationType.AUTO : par défaut, la stratégie prise en charge par la base de données configurée.
  • GenerationType.SEQUENCE : utilise une séquence de base de données pour générer des valeurs de clé primaire.
  • GenerationType.TABLE : utilise une table distincte pour gérer la clé primaire valeurs.

Extension de la classe Domain : objectif et avantages

L'extension de la classe abstraite Domain vous permet d'hériter de fonctionnalités et de comportements communs pour toutes les entités de domaine de votre application. Cette approche favorise la réutilisabilité du code, la cohérence et le respect d'une architecture définie. Les avantages incluent :

  • Validation des données standardisée et héritage des règles métier.
  • Mappage des classes de point de service unique pour toutes les entités de domaine.
  • Organisation et maintenabilité du code améliorées.

En tirant parti de ces annotations et techniques d'abstraction, vous pouvez simplifier la persistance des entités et maintenir une gestion cohérente des données dans vos candidatures JPA.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal