Montre comment traduire une relation 1,n avec JPA
Même dans des relations simples de types 1,n, JPA nous propose un certain nombre d’annotations qui produiront des mapping différent. Il peut être intéressant de les connaître et de voir ce que cela donne du coté bases de données.
Nous prendrons comme premier exemple le diagramme de classe suivant :
Il représente une relation un à plusieurs entre une classe Commande et ses lignes de commande. Cette relation est unidirectionnelle, c’est à dire que nous partons de la commande pour récupérer la liste de ces lignes de commandes.
Nous allons d’abord créer la classe LigneCde qui est une simple Entity qui n’a pas de lien vers une autre classe.
Nous allons maintenant définir le code de la classe Commande.
La seule particularité est l’attribut donnant la liste des lignes de commandes. L’annotation @OneToMany permet de spécifier le type de la relation.
Exécutons la génération de la base et voyons les tables qui ont été générées :
On voit que par défaut, 3 tables ont été générées. 2 tables correspondant aux 2 classes plus une table de jointure. Il est vraisemblable que si nous avions construit nous même cette base nous aurions utilisée une clé étrangère dans la table des lignes de commandes pour éviter une double jointure.
Il va donc falloir modifier nos annotations dans la classe Commande.
Il suffit d’ajouter l’annotation @JoinColumn et préciser le nom du champ qui servira de clé étrangère dans la table enfant des lignes de commandes. Ce qui donne :
Régénérons la base de données et voyons son contenu :
Nous avons bien nos 2 tables avec une clé étrangère dans la seconde.
Crée par: chris
Créé le: 7 juillet 2015
Modifié le: 18 septembre 2015
Nombre de visites: 2012
Popularité: 8 %
Popularité absolue: 1
2003-2023 LePpf
Plan du site
| Se connecter |
Contact |
RSS 2.0 |
Sur YouTube
Visiteurs connectés : 0
Nombre moyen de visites quotidiennes sur le site: 220