La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Institut Mines-Télécom Page 1 Gestion de la persistance des objets CSC4002 Claire Lecocq 2012.

Présentations similaires


Présentation au sujet: "Institut Mines-Télécom Page 1 Gestion de la persistance des objets CSC4002 Claire Lecocq 2012."— Transcription de la présentation:

1 Institut Mines-Télécom Page 1 Gestion de la persistance des objets CSC4002 Claire Lecocq 2012

2 Institut Mines-Télécom Page 2 Plan du document Motivations Application exemple : la médiathèque Problématique en image Quel schéma de Base de Données Relationnelle ? Gérer la persistance dans Java : JDBC 2012

3 Institut Mines-Télécom Page 3 Application exemple : la médiathèque Développement objet : standard de fait Où sont stockées les données ? Durée de vie ? Partage ? Volume de données ? Une idée ? 2012

4 Institut Mines-Télécom Page 4 Problématique en image 2012 Stockage des données Application Mapping chargement déchargement UML Développement Objet Modèle E/A Relationnel SGBD

5 Institut Mines-Télécom Page 5 Plan du document Motivations Quel schéma de Base de Données Relationnelle ? Processus de conception dune BD (rappel) Entité/Association versus diagramme de classes UML Existe t-il un modèle relationnel pour un diagramme de classes ? Diagramme de classes de la médiathèque Revenons sur la sémantique de lhéritage 1 Traduction de lhéritage en modèle relationnel Gérer la persistance dans Java : JDBC la généralisation/spécialisation est appelée dans ce cours héritage

6 Institut Mines-Télécom Page 6 Processus de conception dune BD (rappel) 2012 Monde réel Recueil des besoins et analyse Besoin de la BD Conception logique Schéma conceptuel (haut niveau) Transformation du modèle Schéma conceptuel (spécifique SGBD) Conception physique Schéma physique (spécifique SGBD) Indépendant du SGBD Spécifique à un SGBD Prise en compte des particularités du SGBD Contrat E/A UML Placement Disque Optimisation Relationnel Réseau Hiérarchique

7 Institut Mines-Télécom Page 7 Entité/Association versus diagrammes de classes et dobjets UML SI-BD Entité/Association Génie logiciel - langages Diagramme de classe Entité Classe Entité faible Composition Association sans attribut Association Association avec attribut(s) Classe dassociation (Héritage), association « est un »<

8 Institut Mines-Télécom Page 8 Existe t-il un modèle relationnel pour un diagramme de classes ? Si Hypothèse 1 : existe correspondance E/A diagramme de classes Hypothèse 2 : existe traduction E/A relationnel Alors Transformer un diagramme de classes UML (partie statique) en un schéma relationnel « équivalent » peut se ramener à la transformation dun schéma E/A vers un schéma relationnel Problème hypothèse 1 : héritage 2012

9 Institut Mines-Télécom Page 9 Diagramme de classes de la médiathèque 2012

10 Institut Mines-Télécom Page 10 Revenons sur la sémantique de lhéritage Classe enfant hérite des attributs de sa classe parent Spécialisation peut être : Totale ou partielle : Totale : toute instance est spécialisée dans au moins une classe enfant Classe abstraite Partielle : une instance peut ne pas être spécialisée Une partition ou un recouvrement : Partition : une instance est spécialisée dans au plus une classe enfant Recouvrement : une instance peut être spécialisée dans plusieurs classes enfants Héritage multiple 2012 Personne nom prénom adresse Totale Recouvrement Personne = Etudiant Salarie Etudiant Salarié Totale Partition Salarie = Prive Public Prive Public = Etudiant noEtud cycle Salarie salaire Public indice Prive prime X Doctorant vacataire

11 Institut Mines-Télécom Page 11 Traduction de lhéritage en modèle relationnel 3 correspondances possibles : 1.Correspondance directe 2.Correspondance ascendante 3.Correspondance par aplatissement 3.1. Pour partition 3.2. Pour recouvrement Ne sappliquent pas à toutes les typologies darbre dhéritage totale/partielle partition/recouvrement 2012

12 Institut Mines-Télécom Page 12 Correspondance directe (n° 1) Une classe une relation BD Liaison entre les relations se fait via la clé Correspondance de larbre de Document 2012 Document code titre auteur annee empruntable emprunte nbEmprunts Audio code classification Video code dureeFilm mentionLegale Livre code nbPages Création dune clé Clé + clé étrangère Relation clé Contrainte dintégrité référentielle

13 Institut Mines-Télécom Page 13 Correspondance directe (n° 1) - suite 2012 Document code titre auteur annee empruntable emprunte nbEmprunts Audio code classification Video code dureeFilm mentionLegale Livre code nbPages Relation clé Contrainte dintégrité référentielle create view vueDocument(code, titre, auteur, annee, empruntable, emprunte, salle,rayon,nomGenre,nbEmprunts, typedoc, classification, nombrePages, dureeFilm, mentionLegale) as select document.code, titre, auteur, annee, empruntable, emprunte, salle,rayon,nomGenre,nbEmprunts,'Audio', classification, null, null, null from audio, document where audio.code = document.code union select document.code, titre, auteur, annee, empruntable, emprunte, salle,rayon,nomGenre,nbEmprunts,'Video', null, null, dureeFilm, mentionLegale from video, document where video.code = document.code union select document.code, titre, auteur, annee, empruntable, emprunte, salle,rayon,nomGenre,nbEmprunts,'Livre', null, nombrePages, null, null from livre, document where livre.code = document.code ; Document code titre auteur annee empruntable emprunte nbEmprunts Typedoc Classification nombrePages Durrefilm Mentionlegale Vue Construction de la vue par requête

14 Institut Mines-Télécom Page 14 Correspondance directe pour la médiathèque 2012 Document code titre auteur annee empruntable emprunte nbEmprunts nomGenre salle rayon Audio code classification Video code dureeFilm mentionLegale Livre code nbPages Genre nom nbEmprunts Localisation salle rayon Client nom prenom adresse nbEmpruntsEffectues nbEmpruntsDepasses nbEmpruntsEnCours catclient dateInscription codeReduction dateRenouvellement Categorie nom nbEmpruntsMax tarifInscription coefDuree coefTarif codeReducUsed FicheEmprunt nom prenom code dateEmprunt dateLimite depasse Dénormalisation Solution retenue pour le TP Document code titre …

15 Institut Mines-Télécom Page 15 Spécialisation Remarques TotalePartiellePartitionRecouvrement OK Vérification : 1 tuple de la « relation parent » est toujours référencé par 1 tuple de la « relation enfant » OK Vérification : non duplication de clé entre « relations enfants » OK Reconstitution de l'objet par jointure Sémantique très proche du modèle objet Fonctionne quelle que soit la typologie darbre dhéritage 2012 Correspondance directe et typologie des arbres dhéritage

16 Institut Mines-Télécom Page 16 Correspondance ascendante (n° 2) Chaque classe spécialisée une relation BD Classe parent une vue Correspondance de larbre de Document 2012 CREATE VIEW Document AS SELECT code, titre, auteur, annee, empruntable, emprunte, nbEmprunts FROM Audio UNION SELECT code, titre, auteur, annee, empruntable, emprunte, nbEmprunts FROM Video UNION SELECT code, titre, auteur, annee, empruntable, emprunte, nbEmprunts FROM Livre Document code titre auteur annee empruntable emprunte nbEmprunts Audio code titre auteur annee empruntable emprunte nbEmprunts classification Video code titre auteur annee empruntable emprunte nbEmprunts dureeFilm mentionLegale Livre code titre auteur annee empruntable emprunte nbEmprunts nbPages Vue Construction de la vue par requête

17 Institut Mines-Télécom Page 17 Correspondance ascendante pour la médiathèque Une vue nest pas une relation BD ! Pas de clé, non référençable par une clé étrangère 2012 Audio code Video code Livre code Document code FicheEmpruntAudio code nom prenom Client nom prenom FicheEmpruntVideo code nom prenom FicheEmpruntLivre code nom prenom FicheEmprunt

18 Institut Mines-Télécom Page 18 Correspondance ascendante et typologie des arbres dhéritage 2012 Spécialisation Remarques TotalePartiellePartitionRecouvrement OKKOOKKO Redondance de données Multiplie les relations Évite les jointures pour reconstruire les objets Spécialisation totale. Classe abstraite = vue (relation virtuelle) Pas possible dassurer simplement lunicité des identificateurs

19 Institut Mines-Télécom Page 19 Correspondance par aplatissement (n° 3.1) Ensemble des classes de la hiérarchie une seule relation BD Éventuellement chaque classe une vue Correspondance de larbre de Document 2012 CREATE VIEW Audio AS SELECT code, titre, auteur, annee, empruntable, emprunte, nbEmprunts, classification FROM Document WHERE typeDocument=Audio Document code titre auteur annee empruntable emprunte nbEmprunts typeDocument classification dureeFilm mentionLegale nbPages Audio code … classification Video code … dureeFilm mentionLegale Livre code … nbPages

20 Institut Mines-Télécom Page 20 Correspondance par aplatissement 3.1 pour la médiathèque 2012 Document code titre auteur annee empruntable emprunte nbEmprunts nomGenre salle rayon typeDocument classification dureeFilm mentionLegale nbPages Genre nom nbEmprunts Localisation salle rayon Client nom prenom adresse nbEmpruntsEffectues nbEmpruntsDepasses nbEmpruntsEnCours typeClient dateInscription dateRenouvellement codeReduction dateCotisation FicheEmprunt nom prenom code dateEmprunt dateLimite depasse Solution retenue pour le TP Categorie nom nbEmpruntsMax tarifInscription coefDuree coefTarif codeReducUsed

21 Institut Mines-Télécom Page 21 Correspondance par aplatissement 3.1 et typologie des arbres dhéritage 2012 Spécialisation Remarques TotalePartiellePartitionRecouvrement OK Si attribut donnant le nom de la classe autorisé à null OKKO Évite les jointures pour reconstruire les objets Du vide dans la relation (valeurs nulles)... Spécialisation totale : classes abstraites relations (concrètes), classes concrètes vues (virtuelles) Souvent la solution la plus simple à mettre en place; la plus choisie

22 Institut Mines-Télécom Page 22 Correspondance par aplatissement 3.2 pour la médiathèque Variante de la correspondance 3.1 avec utilisation dun attribut booléen supplémentaire par classe enfant Si un document pouvait être à la fois un Audio et une Vidéo … 2012 CREATE VIEW Audio AS SELECT code, titre, auteur, annee, empruntable, emprunte, nbEmprunts, classification FROM Document WHERE AudioB = 1 Document code titre auteur annee empruntable emprunte nbEmprunts AudioB VideoB LivreB Classification dureeFilm mentionLegale nbPages

23 Institut Mines-Télécom Page 23 Spécialisation Remarques TotalePartiellePartitionRecouvrement OK Si tous les attributs booléens correspondant aux classes enfants sont autorisés à NULL Non pertinentOKidem Correspondance par aplatissement 3.2 et typologie des arbres dhéritage

24 Institut Mines-Télécom Page 24 Plan du document Motivations Quel schéma de Base de Données Relationnelle ? Gérer la persistance dans Java : JDBC Quest ce que JDBC ? Que faire pour pouvoir utiliser JDBC ? Étapes dinteraction avec le SGBD Politique de gestion de la persistance 2012

25 Institut Mines-Télécom Page 25 Quest ce que JDBC ? Java DataBase Connectivity API Java pour accéder à des SGBDR via SQL Indépendance / SGBD cible (via des pilotes) Fourni par le paquetage java.sql Interfaces Implémentées dans les pilotes (en anglais driver) Dépendants des SGBDs cibles « Tout » SGBD a un pilote JDBC 4 catégories de pilotes en fonctions de : La présence ou non de pilote SGBD (non Java) sur le client Protocole de communication entre le client Java et le serveur 2012 SGBD Application java Pilote Protocole du SGBD Type 4

26 Institut Mines-Télécom Page 26 Que faire pour pouvoir utiliser JDBC ? Avoir un pilote Le référencer dans le CLASSPATH Dans chaque classe qui utilise des ordres JDBC Importer le paquetage java.sql import java.sql.*; Charger en mémoire la classe du (des) pilote(s) avant dutiliser JDBC : Class.forName("oracle.jdbc.OracleDriver"); Class.forName("com.mysql.jdbc.Driver" ); Class.forName("org.postgresql.Driver" ); 2012

27 Institut Mines-Télécom Page 27 Étapes dinteraction avec le SGBD 1. Ouvrir une connexion Instance de Connection 2. Créer des « fils » pour supporter lenvoi dinstructions SQL au sein de la connexion Requête dans une instance de Statement, PreparedStatement ou CallableStatement 3. Demander lexécution de ces instructions par le SGBD : Requête dinterrogation (SELECT) : méthode executeQuery() sur le *Statement Requête de mise à jour ( INSERT, UPDATE, DELETE ) : méthode executeUpdate() sur le *Statement autre ordre SQL (appel de procédure stockée) : execute() sur le *Statement 4. Fermer la connexion : méthode close() sur la connexion 2012

28 Institut Mines-Télécom Page 28 Connection versus Statement 2012 Application java Pilote MySQL SGBD PostgresSQL Statement statement1 « SELECT * FROM Document » Statement statement2 Statement statement3 Media : Mediatheque Nom : string …. Connection Constructeur() rechercheBD() miseAJourBD() Destructeur()

29 Institut Mines-Télécom Page Établir une connexion String driver = "org.postgresql.Driver"; String urlBd = "jdbc:postgresql://mysql-inf/TPCONCEPTION"; try { Class.forName(driver).newInstance(); }catch(Exception cnfe) { throw new OperationImpossible("Echec acces Pilote BD- " + driver + " " + cnfe); } Statement stmt = null; try { laConnexion = DriverManager.getConnection(urlBd,compte,passe); } catch(SQLException qe) { throw new OperationImpossible("Echec connexion BD- " + qe + " " + urlBD); } 2012

30 Institut Mines-Télécom Page 30 2 et 3. Exécuter une requête SELECT try { stmt = laConnexion.createStatement(); ResultSet rset = stmt.executeQuery ("select * from localisation"); while (rset.next()) { String s = rset.getString("salle"); String r = rset.getString("rayon"); Localisation loc = new Localisation(s,r); lesLocalisations.addElement(loc); } } catch(SQLException se) { throw new OperationImpossible("Echec acces Localisation- " +se.getMessage()); } 2012

31 Institut Mines-Télécom Page 31 2 et 3. Exécuter une requête SELECT Méthode executeQuery() executeQuery() renvoie une instance de ResultSet Linstance de ResultSet se parcourt itérativement ligne par ligne Les colonnes sont référencées par leur numéro ou par leur nom L'accès aux valeurs des colonnes se fait par les méthodes getXXX() où XXX représente le type de l'objet ou bien par un getObject() suivi dune conversion explicite 2012

32 Institut Mines-Télécom Page 32 Correspondance de type SQL/Java 2012

33 Institut Mines-Télécom Page 33 2 et 3. Exécuter une requête de mise à jour (1) private void insererBD(Document doc) throws perationImpossible { try { PreparedStatement stmt = null; if(doc instanceof Audio ){ Audio au = (Audio) doc; stmt = laConnexion.prepareStatement("INSERT INTO document (code, titre, auteur, annee, empruntable, emprunte, salle, rayon, nomgenre, nbemprunts, typedoc, classification) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'Audio', ?)"); stmt.setString(11, au.getClassification()); } else { // Video puis Livre } 2012

34 Institut Mines-Télécom Page 34 2 et 3. Exécuter une requête de mise à jour (2) stmt.setString(1, doc.getCode()); stmt.setString(2, doc.getTitre()); stmt.setString(3, doc.getAuteur()); stmt.setString(4, doc.getAnnee()); stmt.setInt(5,doc.estEmpruntable()?1:0); stmt.setInt(6, doc.estEmprunte()?1:0); stmt.setString(7, doc.getLocalisation().getSalle()); stmt.setString(8, doc.getLocalisation().getRayon()); stmt.setString(9, doc.getGenre().getNom()); stmt.setInt(10, doc.getNbEmprunts()) } catch (SQLException e) { throw new OperationImpossible("Echec insertion BD- " + e); } 2012

35 Institut Mines-Télécom Page 35 Politique de gestion de la persistance Comment intégrer le code JDBC qui assure le chargement et le déchargement des objets Java depuis la BD En structurant au mieux le code (limiter le nombre dopérations à modifier) Quel(s) objet(s) charger et quand ? Quel(s) objet(s) décharger et quand ? 2012

36 Institut Mines-Télécom Page 36 Chargement / déchargement (1) Chargement Constructeur dobjet intégrant tous les attributs Statique : constructeur de « collections » Similaire au TP médiathèque sérialisée Volume de données contrôlé Dynamique : constructeur dobjet (nécessité dune clé pour sélectionner lobjet) Charger les objets connexes Déchargement Statique : à la fin du programme (attention aux pertes dinfos) Dynamique : dans les opérations de mise à jour 2012

37 Institut Mines-Télécom Page 37 Chargement / déchargement (2) Statique Adapté aux petits volumes de données Faible taux de mises à jour Simple à mettre en œuvre Dynamique Adapté aux volumes de données importants Fort taux de mises à jour Meilleure résistance aux fautes Plus compliqué à programmer 2012


Télécharger ppt "Institut Mines-Télécom Page 1 Gestion de la persistance des objets CSC4002 Claire Lecocq 2012."

Présentations similaires


Annonces Google