Maison > Java > javaDidacticiel > Comment mapper des clés composites dans JPA avec Hibernate à l'aide de « EmbeddedId » et « IdClass » ?

Comment mapper des clés composites dans JPA avec Hibernate à l'aide de « EmbeddedId » et « IdClass » ?

Patricia Arquette
Libérer: 2024-12-03 09:32:14
original
439 Les gens l'ont consulté

How to Map Composite Keys in JPA with Hibernate Using `EmbeddedId` and `IdClass`?

Clés composites dans JPA avec Hibernate

Lorsque vous travaillez avec des bases de données relationnelles, il peut être nécessaire de mapper des clés composites à des classes Java pour les objets- programmation orientée. Dans le code donné, la table Time a une clé composite comprenant levelStation et confPathID. Cet article vous expliquera comment mapper cette clé composite à l'aide de JPA et Hibernate avec les annotations EmbeddedId et IdClass.

IdClass

L'annotation IdClass est utilisée pour mapper plusieurs champs individuels en une seule clé primaire composite (PK). Pour implémenter cette méthode, créez une classe interne statique qui définit la structure composite PK et implémentez ses méthodes equals() et hashCode() pour une comparaison appropriée des valeurs. Identifiez les champs correspondants dans cette classe statique avec ceux de l'entité.

public class TimePK implements Serializable {
    protected Integer levelStation;
    protected Integer confPathID;
    // ...
}

@Entity
@IdClass(TimePK.class)
public class Time {
    @Id private Integer levelStation;
    @Id private Integer confPathID;
    // ...
}
Copier après la connexion

EmbeddedId

À l'aide de l'annotation EmbeddedId, vous pouvez encapsuler le PK composite en tant qu'élément intégrable. classe au sein de l’entité. Dans la classe intégrable, définissez les champs constituant le PK composite et leurs accesseurs.

@Embeddable
public class TimePK {
    protected Integer levelStation;
    protected Integer confPathID;
    // ...
}

@Entity
public class Time {
    @EmbeddedId private TimePK timePK;
    // ...
}
Copier après la connexion

Différences

Les annotations IdClass et EmbeddedId peuvent être utilisées pour mapper les clés composites , mais ils servent des objectifs légèrement différents :

  • EmbeddedId souligne que le PK composite a une signification sémantique en tant qu'entité en lui-même ou est potentiellement réutilisable.
  • IdClass, d'autre part, se concentre sur la spécification qu'une combinaison particulière de champs identifie de manière unique une entité sans impliquer de signification spécifique.

Requête avec des clés composites

Selon l'annotation utilisée, syntaxe légèrement différente est requis lors d'une requête basée sur des clés composites :

IdClass

select t.levelStation from Time t
Copier après la connexion

EmbeddedId

select t.timePK.levelStation from Time t
Copier après la connexion

Références

  • [JPA 1.0 Spécification](https://docs.oracle.com/javaee/7/api/javax/persistence/package-summary.html)

    • Section 2.1.4 « Clés primaires et identité d'entité »
    • Section 9.1.14 « EmbeddedId Annotation"
    • Section 9.1.15 "Annotation IdClass"

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