Dévoilement de la distinction entre @JoinColumn et @mappedBy dans les relations JPA
Dans JPA, la gestion des relations entre entités est cruciale pour l'intégrité et la récupération des données . Deux annotations, @JoinColumn et @mappedBy, jouent des rôles distincts dans l'établissement de ces relations.
@JoinColumn : indication de la propriété et de la colonne de clé étrangère
L'annotation @JoinColumn marque une entité en tant que propriétaire d’une relation. Cela signifie que la table correspondante contiendra une colonne avec une référence de clé étrangère à la table référencée. Dans l'exemple fourni :
@OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY) @JoinColumn(name = "companyIdRef", referencedColumnName = "companyId") private List<Branch> branches;
L'entité Société est propriétaire de la relation avec son entité Branche. L'annotation @JoinColumn spécifie qu'une colonne nommée "companyIdRef" dans la table Branch contiendra la clé étrangère de la colonne "companyId" dans la table Company.
@mappedBy : indiquant la relation inverse et le propriétaire dans Entité opposée
D'autre part, l'attribut @mappedBy marque une entité comme l'inverse d'un relation. Le nom de l'attribut spécifié dans @mappedBy doit correspondre au nom de la propriété dans l'entité opposée qui représente la relation de son point de vue.
Dans l'exemple :
@OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY, mappedBy = "companyIdRef") private List<Branch> branches;
L'attribut @mappedBy indique que l'entité Succursale est l'inverse de la relation par rapport à l'entité Société. Comme "companyIdRef" correspond au nom de la propriété dans l'entité Branch :
@ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "companyId") private Company company;
Conséquences de l'utilisation de l'annotation
Conclusion
Comprendre la différence entre @JoinColumn et @mappedBy est essentiel pour établir des relations correctes entre les entités JPA . En utilisant ces annotations de manière appropriée, les développeurs peuvent maintenir l'intégrité des données et naviguer de manière transparente dans des graphiques d'objets complexes.
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!