Imprimer
Catégorie : R6.05 - Prog. Framework : Spring boot
Affichages : 547

Préambule

 

Ce deuxième TP consiste à mettre en place des mappings relationnels entre quelques tables, afin d'utiliser les connaissances des TD 2 & 3.

 

1°/ Items et catégories d'items

Dans le premier TP, il n'y a aucune relation établie entre les tables  rpgitems et categories grâce à un mapping relationnel. En effet, la relation est faîte "à la main", en utilisant dans la table rpgitems une colonne indiquant l'id d'un élément de categories.

Normalement, il faudrait que cette colonne soit une clé étrangère faisant référence à la clé primaire de categories.

Exercice : modifier les classes RpgItem et/ou ItemCategory pour établir un mapping de type 1,* de façon unidirectionnel entre les deux car il n'est pas important de retrouver directement quels sont les items de telle ou telle catégorie.

 

Tester le mapping avec une requête pour récupérer un ou plusieurs items et vérifier que le JSON contient les informations liées à la catégorie de l'item et pas seulement son id.

 

2°/ Rues et boutiques

L'objectif de cette partie est de créer des rues et des boutiques, sachant qu'une rue peut contenir plusieurs boutiques, mais qu'une boutique n'est présente que dans une seule rue.

Exercice 1 :

 

Tester le mapping en récupérant une rue. Normalement, cela aboutit à une erreur à cause de la relation bidirectionnelle et du fait que la sérialisation automatique entre dans une récursion infinie.

Exercice 2 :

 Tester de nouveau le mapping en récupérant une rue et une boutique. Cette fois, il n'y a normalement pas d'erreur.

 

3°/ Boutique et items

L'objectif de cette partie est de créer des boutiques qui vont vendre des items. D'un point de vue relationnel, cela implique une relation de type *,*. Mais pour compliquer un peu, chaque boutique possède un certain nombre d'exemplaires d'items en stock et pratique ses propres promotions sur ces items. Cela implique que la table intermédiaire entre shops et rpgitems contienne ces informations et qu'il va falloir créer des mappings one-to-many et/ou many-to-one entre les 3 tables.

 

 Exercice :

 

Tester le mapping en récupérant une boutique. Si tout va bien, le JSON reçu contient également les informations des items vendus par la boutique.