jpa
Relations entre entités
Recherche…
Remarques
Relations entre les entités
Une clé étrangère peut être une ou plusieurs colonnes faisant référence à une clé unique, généralement la clé primaire, dans une autre table.
Une clé étrangère et la clé parent principale référencée doivent avoir le même nombre et le même type de champs.
Les clés étrangères représentent les relations entre une ou plusieurs colonnes d'une table et une ou plusieurs colonnes d'une autre table.
Multiplicité dans les relations d'entités
Multiplicité dans les relations d'entités
Les multiplicités sont des types suivants:
- One-to-one : chaque instance d'entité est liée à une instance unique d'une autre entité.
- One-to-many : une instance d'entité peut être associée à plusieurs instances des autres entités.
- Plusieurs à un : plusieurs instances d'une entité peuvent être associées à une seule instance de l'autre entité.
- Plusieurs à plusieurs : les instances d'entité peuvent être associées à plusieurs instances l'une de l'autre.
Cartographie individuelle
Le mappage un à un définit une association à une seule valeur pour une autre entité à multiplicité un à un. Ce mappage de relation utilise l'annotation @OneToOne sur la propriété ou le champ persistant correspondant.
Exemple: entités Vehicle et ParkingPlace .
Cartographie un-à-plusieurs
Une instance d'entité peut être liée à plusieurs instances des autres entités.
Les relations un-à-plusieurs utilisent l'annotation @OneToMany sur la propriété ou le champ persistant correspondant.
L'élément mappedBy est nécessaire pour faire référence à l'attribut annoté par ManyToOne dans l'entité correspondante:
@OneToMany(mappedBy="attribute")
Une association un-à-plusieurs doit mapper la collection d'entités.
Cartographie multi-un
Un mappage plusieurs à un est défini en annotant l'attribut dans l'entité source (l'attribut faisant référence à l'entité cible) avec l'annotation @ManyToOne .
Une @JoinColumn(name="FK_name") décrit une clé étrangère d'une relation.
Cartographie de plusieurs à plusieurs
Les instances d'entité peuvent être associées à plusieurs instances l'une de l'autre.
Les relations plusieurs à plusieurs utilisent l'annotation @ManyToMany sur la propriété ou le champ persistant correspondant.
Nous devons utiliser une troisième table pour associer les deux types d'entité (table de jointure).
Exemple d'annotation @JoinTable
Lors du mappage de relations plusieurs à plusieurs dans JPA, la configuration de la table utilisée pour la jointure de clés étrangères peut être fournie à l'aide de l'annotation @JoinTable :
@Entity
public class EntityA {
@Id
@Column(name="id")
private long id;
[...]
@ManyToMany
@JoinTable(name="table_join_A_B",
joinColumns=@JoinColumn(name="id_A"), referencedColumnName="id"
inverseJoinColumns=@JoinColumn(name="id_B", referencedColumnName="id"))
private List<EntityB> entitiesB;
[...]
}
@Entity
public class EntityB {
@Id
@Column(name="id")
private long id;
[...]
}
Dans cet exemple, qui consiste en l' Entité ayant un grand nombre à plusieurs rapport à l' Entité, réalisé par le entitiesB domaine, nous utilisons l'annotation @JoinTable pour spécifier que le nom de la table pour la table de jointure est table_join_A_B , composée par les colonnes id_A et id_B , les clés étrangères référençant respectivement l' id colonne dans la table EntityA et dans la table EntityB; (id_A,id_B) sera une clé primaire composite pour la table table_join_A_B .