Mise à jour (enfin!) du dernier semestre de cours
This commit is contained in:
124
cours/A63/20090220-Seance2
Normal file
124
cours/A63/20090220-Seance2
Normal file
@ -0,0 +1,124 @@
|
||||
Vendredi 20 février 2009
|
||||
A63 Persistance de données
|
||||
M. LACHICHE
|
||||
|
||||
====== Cours ======
|
||||
|
||||
===== Shadow information =====
|
||||
|
||||
Toplink permet d'épargner toute l'instrumentation des attributs d'un objet pour renseigner son état d'insertion, de mise à jour, etc dans la base de données.
|
||||
|
||||
===== Mapping de l'héritage =====
|
||||
|
||||
Les BDD relationnel ne prennent pas en compte l'héritage => pas une raison pour éviter l'héritage.
|
||||
|
||||
Classe abstraite = classe qui ne peut pas avoir d'instance (abstract en java)
|
||||
|
||||
Personne est une classe abstraite.
|
||||
|
||||
Pour //mapper// l'héritage on a 4 solutions :
|
||||
* Tout mettre dans une table
|
||||
* Faire une table par classe concrète
|
||||
* Faire une table par classe, y compris les abstraites
|
||||
* Représenter les classes par une structure de classe générique
|
||||
|
||||
Les 3 premières solutions sont gérées par TopLink.
|
||||
|
||||
====== Exercice ======
|
||||
|
||||
On a une couche métier avec des Oiseaux, des Lézards, des Dragons.
|
||||
|
||||
Le dragon hérite du lézard et de l'oiseau.
|
||||
|
||||
L'oiseau possède les attributs suivants :
|
||||
* vitesseMaximal
|
||||
* tailleAiles
|
||||
|
||||
Le lézard possède les attributs suivants :
|
||||
* nombreGriffes
|
||||
* nombreCouleurs
|
||||
|
||||
Le dragon possède les attributs suivants :
|
||||
* nom
|
||||
* puissanceFeu
|
||||
|
||||
Intitulé de l'exercice : Adapter ce modèle métier aux 4 modèles de base de données expliqués dans le cours.
|
||||
|
||||
===== Corrigé =====
|
||||
|
||||
==== Solution 1 ====
|
||||
|
||||
On doit créer une table : ANIMAL.
|
||||
|
||||
Attributs :
|
||||
* identifiant
|
||||
* typeAnimal
|
||||
* nombreGriffe
|
||||
* nombreCouleur
|
||||
* tailleAiles
|
||||
* vitesseMaximale
|
||||
* nom
|
||||
* puissanceFeu
|
||||
|
||||
==== Solution 2 ====
|
||||
|
||||
Trois tables :
|
||||
* Oiseau
|
||||
* Lézard
|
||||
* Dragon
|
||||
|
||||
Attributs pour Oiseau :
|
||||
* id
|
||||
* vitesseMaximale
|
||||
* tailleAiles
|
||||
|
||||
Attributs pour Lézards :
|
||||
* identifiant
|
||||
* nombreGriffes
|
||||
* nombreCouleurs
|
||||
|
||||
Attributs pour Dragons :
|
||||
* identifiant
|
||||
* vitesseMaximal
|
||||
* tailleAiles
|
||||
* nombreGriffes
|
||||
* nombreCouleurs
|
||||
* puissanceFeu
|
||||
* nom
|
||||
|
||||
==== Solution 3 ====
|
||||
|
||||
Trois tables :
|
||||
* Oiseau
|
||||
* Lézard
|
||||
* Dragon
|
||||
|
||||
Avec chacune leur propres attributs (pas de redondance d'attributs dans Dragon.
|
||||
|
||||
Plusieurs solutions :
|
||||
* soit on met idAnimal partagé par tout le monde, comme avant
|
||||
* soit on adapte : on met idOiseau et idLézard en clé primaire pour dragon, et idOiseau et idLézard dans leur table respective
|
||||
|
||||
==== Solution 4 ====
|
||||
|
||||
On reprend le même modèle que dans le cours.
|
||||
|
||||
On remplit alors les classes, voilà tout.
|
||||
|
||||
----
|
||||
|
||||
Séance 3
|
||||
|
||||
====== Mapping des associations ======
|
||||
|
||||
Dans les SGBD, relation voulait dire association des domaines de la table.
|
||||
|
||||
Cependant, cela est actuellement utilisé pour des relations entres les tables.
|
||||
|
||||
Clés artificielles pour être indépendant du domaine d'application : si on a besoin de deux objets identiques mais différents pour nous (exemple : code barre des produits)
|
||||
|
||||
====== Mapping des propriétés de classe ======
|
||||
|
||||
Ne peuvent pas être géré comme des attributs ordinaires car sont là pour UNE classe pas pour ses instances si on veut.
|
||||
|
||||
|
Reference in New Issue
Block a user