125 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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.
 | 
						|
 | 
						|
 |