Article faisant partie d’une série présentant les différentes annotations permettant de traduire des relations entre classes persistantes en bases de données relationnelles.
Voyons d’abord comment représenter une relation ManyToMay possédant des attributs en UML. Nous prendrons comme exemple les classes L et M avec comme attribut d’association une donnée nommée options de type String.
En UML nous sommes obligé de passer par une classe d’association, nommée ClasseLM dans cet exemple.
Pour pouvoir traduire notre exemple en Java avec JPA , nous allons être obligé de modifier notre diagramme de classes pour traduire notre classe d’association en classe standard. Ce qui donne :
Ce qui nous donne 2 jointures de type OneToMany sur la classe LM qui correspondra à une table de jointure dans la base de données. Il reste maintenant à définir l’identifiant de cette classe qui sera composé des 2 clés des classes L et M.
Code Java
Comme la classe LM servant de jointure possède une clé composée, nous somme obligé de créer d’abord une classe pour la clé :
Code de la classe clé composite :
Cette classe n’est pas une entity mais doit être Sérializable et doit avoir ces méthodes hashCode() et equals() de redéfinies pour pouvoir être utilisée comme clé composite.
Pour les 3 classes suivantes, nous nous retrouverons avec des relations OnToMany bidirectionnelles.
Voici le code de la classe L.
Le code de la classe M ;
Le code de la classe intermédiaire LM.
Les tables correspondantes
Structure de la table L :
Structure de la table M :
Structure de la table LM ;
Et voici le script SQL permettant de générer les tables :
Je ne vous retranscrit pas ici les scripts des tables L et M qui n’on rien de particulier mais uniquement celui de la table de jointure.
Script de la table T_TABLE_LM :
On peut remarquer que cette table dispose bien d’une clé primaire composite mais que nous avons également chaque champs de cette clé comme clé étrangère vers les 2 autres tables.
Nous avons vu que pour traduire le concept UML de classe d’association, nous devons passer par une modification du modèle pour transformer une relation ManyToMany en 2 relations OneToMany.
Crée par: chris
Créé le: 3 octobre 2015
Modifié le: 3 octobre 2015
Nombre de visites: 6086
Popularité: 46 %
Popularité absolue: 2
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: 170