Institut Mines-Télécom Gestion de la persistance des objets CSC4002 Claire Lecocq Janvier 2014.

Slides:



Advertisements
Présentations similaires
Gestion de la persistance des objets
Advertisements

Institut Mines-Télécom Gestion de la persistance des objets CSC4002 Claire Lecocq Janvier 2014.
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
Cours n°2 Implémentation et exploitation
EJB 2 et spécialisation Présentation. Spécialisation La spécialisation Concept objet implémenté dans les langages dits orientés objet. Très souvent accompagné.
Système de gestion d'entrées pour un cinéma Scanvion Michel – Etudiant 4.
RAPPEL SUR LES BASES DE DONNÉES, LE SQL 1 er trimestre V1.0 06/01/2015.
Développement à l'Aide de Langages Dynamiques : Smalltalk module IT308: Méthodologies et outils logiciels Nada Ayad, Damien Cassou et Annabelle Souc.
1- Régles de normalisation 2ème partie : normalisation Modèle Conceptuel des Données 2- Les Formes Normales 3- Dépendances Fonctionnelles 4- Recap - Méthodologie.
Stéphane Frénot, Frederique Laforest, Frédéric Le-Mouël IJA 1 TD 6 IJA Structures de données JAVA.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
SQL partie 5 1 LMD create – update – primary key secondary key.
1- Introduction Sommaire Modèle Logique des Données 2- Structure 3- Traduction du MCD en MLD 4- Recap - Méthodologie.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
WIKITTY Base de données orientée documents et API de persistance pour Java.
ANNEE ACADEMIQUE Institut Supérieur Emmanuelle D’Alzon de Butembo COURS: THEORIE DE BASE DE DONNEES : 45H PROMOTION: G2 Gestion Informatique.
Windows NT/2000/XP Enjeux et contraintes techniques
Classes, objets, séquences, communication, états
Les Bases de données Définition Architecture d’un SGBD
Cours Initiation aux Bases De Données
Initiation à la conception des systèmes d'informations
Modèle objet : les classes
Environnement de développement des BD
Environnement du développement de BD ORACLE REPORTS 10g
Introduction aux Systèmes de Gestion de Bases de données
ملخص Initiation à la sgbdr
Bases de données multimédia
Initiation aux bases de données et à la programmation événementielle
Pas de variable globale
Les notions de classe et d'objet
Modélisation Statique
Langage de manipulation de données (LMD)
Base de données: Généralité IFT6800 Jian-Yun Nie.
Semaine #1 INF130 par Frédérick Henri.
Les bases de données et le modèle relationnel
Langage de Manipulation des Données LMD
Langages de programmation TP10
Diagramme de classe UML et C++
Réalisation d’une application web sous le thème: «Mon vétérinaire » par : Benzineb Asmaa et Meftahi Oualid Présentation à Université Saad Dahlab Blida.
Maria Berger - Maîtrise d'AES Algèbre relationnelle.
Manipulation D’Une Base De Données
Programmation en C++ C++ de base
Structure D’une Base De Données Relationnelle
1 ANGAMAN LUDOVIC UTT-LOKO-ITER. Organisation  10 séances de 3h  Présentation des bases de données  TP/TD.
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Plus de 4000 langages....
© Robert Godin. Tous droits réservés.
© Robert Godin. Tous droits réservés.
Introduction en systèmes d’information et bases de données B.Shishedjiev -Introduction en BD 1.
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
Chapitre2: SGBD et Datawarehouse. On pourrait se demander pourquoi ne pas utiliser un SGBD pour réaliser cette structure d'informatique décisionnelle.
Diagrammes UML 420-KE2-LG.
Catherine Cyrot - bibliothèques numériques - Cours 5
© Robert Godin. Tous droits réservés.
1. LE LANGAGE SQL DDL Version 2 - Janvier Le langage SQL-DDL
Paradigme Orienté Objet
DESIGN PATTERN BUILDER KADRI LOUBNA CHARMATI SEWSEN.
Info Bases de données avancées
PRESENTATION ACCESS Editeur : Microsoft Environnement Windows (SE)
TP1 - DBMAIN BFSH Lausanne - Switzerland - Tel Université de Lausanne.
Principes de programmation (suite)
Bases – Banques Entrepôts de données
© Robert Godin. Tous droits réservés.
ISI5 Développement d’interfaces Homme-Machine
© Robert Godin. Tous droits réservés.
1. LE LANGAGE SQL DDL Version 1 - Mai 2009 corrigé le 11/2/2011
Bases de données Singleton pour la connexion
1 Semestre stic Sébastien PARFAIT – Faculté de Médecine – Bureau 145.
Transcription de la présentation:

Institut Mines-Télécom Gestion de la persistance des objets CSC4002 Claire Lecocq Janvier 2014

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

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

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

Institut Mines-Télécom Plan du document 1. Motivations 2. Quel schéma de Base de Données Relationnelle ? ●Processus de conception d’une BD (rappel) ●Existe t-il un modèle relationnel pour un diagramme de classes ? ●Diagramme de classes de la médiathèque ●Traduction du diagramme en dehors de l’arbre d’héritage ●Héritage −Revenons sur la sémantique de l’héritage 1 −Traduction de l’héritage en modèle relationnel 3. Gérer la persistance dans Java : JDBC 4. Conclusion Janvier la généralisation/spécialisation est appelée dans ce cours héritage 5

Institut Mines-Télécom Processus de conception d’une BD (rappel) Janvier 2014 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 6

Institut Mines-Télécom 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 −Voir cours CSC4001 : Introduction aux BD relationnelles −Diapositives 13 et 14 pour la médiathèque ■ Alors ●Transformer un diagramme de classes UML (partie statique) en un schéma relationnel « équivalent » peut se ramener à la transformation d’un schéma E/A vers un schéma relationnel Janvier

Institut Mines-Télécom Hypothèse 1 : Correspondance E/A  diagramme de classes SI-BD Entité/Association Génie logiciel - langages Diagramme de classes Entité  Classe Entité faible  Composition Association sans attribut  Association Association avec attribut(s)  Classe d’association Pas de correspondanceHéritage – Généralisation, spécialisation Clé   Identité d’objet Attribut calculé  Attribut dérivé  Opération Cardinalités  Multiplicités Attribut d’une entité de paramètres  Attributs de classe 8 Janvier 2014

Institut Mines-Télécom Hypothèse 1 : Correspondance E/A  diagramme de classes SI-BD Entité/Association Génie logiciel - langages Diagramme de classes Entité  Classe Entité faible  Composition Association sans attribut  Association Association avec attribut(s)  Classe d’association Pas de correspondanceHéritage – Généralisation, spécialisation Clé   Identité d’objet Attribut calculé  Attribut dérivé  Opération Cardinalités  Multiplicités Attribut d’une entité de paramètres  Attributs de classe 9 Janvier 2014 Problème héritage

Institut Mines-Télécom Diagramme de classes de la médiathèque Janvier

Institut Mines-Télécom Traduction du diagramme en dehors de l’arbre d’héritage ■ Classe façade 11 Janvier 2014

Institut Mines-Télécom Traduction du diagramme en dehors de l’arbre d’héritage ■ Classes persistantes 12 Janvier 2014

Institut Mines-Télécom Règles de traduction ■ Classe  entité ●Attribut d’instance  attribut d’entité ●Adapter au mieux les correspondances de types ●Définir la clé de l’entité ■ Association, agrégation  association ■ Composition  entité faible ■ Multiplicités  cardinalités 13 Janvier 2014

Institut Mines-Télécom Traduction du diagramme en dehors de l’arbre d’héritage ■ Modèle entité/association 14 Janvier 2014 Genre nom : varchar(20) nbEmprunts : integer Localisation salle : varchar(20) rayon : varchar(5) Client nom : varchar(20) prenom : varchar(20) adresse : varchar(20) nbEmpruntsEffectues : integer nbEmpruntsDepasses : integer nbEmpruntsEnCours : integer dateInscription : date codeReduction : integer dateRenouvellement : date Categorie nom : varchar(20) nbEmpruntsMax : integer tarifInscription : float coefDuree : float coefTarif : float codeReducUsed : integer FicheEmprunt dateEmprunt : date dateLimite : date depasse : integer correspondre appartenir 1,1 0,n

Institut Mines-Télécom Hypothèse 2 : Traduction du diagramme en dehors de l’arbre d’héritage ■ Modèle relationnel 15 Janvier 2014 Genre nom : varchar(20) nbEmprunts : integer Localisation salle : varchar(20) rayon : varchar(5) Client nom prenom adresse nbEmpruntsEffectues nbEmpruntsDepasses nbEmpruntsEnCours dateInscription codeReduction dateRenouvellement catclient Categorie nom nbEmpruntsMax tarifInscription coefDuree coefTarif codeReducUsed FicheEmprunt dateEmprunt dateLimite depasse nom prenom

Institut Mines-Télécom Il reste la partie la plus intéressante : l’arbre d’héritage ! 16 Janvier 2014 Genre nom : varchar(20) nbEmprunts : integer Localisation salle : varchar(20) rayon : varchar(5) Client nom prenom adresse nbEmpruntsEffectues nbEmpruntsDepasses nbEmpruntsEnCours dateInscription codeReduction dateRenouvellement catclient Categorie nom nbEmpruntsMax tarifInscription coefDuree coefTarif codeReducUsed FicheEmprunt dateEmprunt dateLimite depasse nom prenom

Institut Mines-Télécom Revenons sur la sémantique de l’héritage (1) ■ Spécialisation peut être : ●Partielle* : une instance peut ne pas être spécialisée ●Totale** : toute instance est spécialisée dans au moins une classe enfant Janvier 2014 Personne nom prénom adresse Partielle Personne  Etudiant  Salarie Totale Salarie = Prive  Public Etudiant noEtud cycle Salarie salaire Public indice Prive prime X 17 Dans les cours UML et Java, les termes utilisés sont classes concrètes* et classes abstraites*

Institut Mines-Télécom Revenons sur la sémantique de l’héritage (2) ■ Spécialisation peut être : ●Recouvrement : une instance peut être spécialisée dans plusieurs classes enfants* ●Partition : une instance est spécialisée dans au plus une classe enfant Janvier 2014 Personne nom prénom adresse Recouvrement Etudiant  Salarié   Partition Prive  Public =  Etudiant noEtud cycle Salarie salaire Public indice Prive prime Doctorant vacataire 18 Dans les cours UML et Java, l’héritage multiple a été ignoré pour raison de simplicité et aussi parce que Java ne l’autorise pas (contrairement à C++)

Institut Mines-Télécom Traduction de l’hé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 Janvier

Institut Mines-Télécom Correspondance directe (n° 1) ■ Une classe  une relation BD ■ Liaison entre les relations se fait via la clé ■ Correspondance de l’arbre de Document Janvier 2014 Document code titre auteur annee empruntable emprunte nbEmprunts Audio code classification Video code dureeFilm mentionLegale Livre code nbPages Création d’une clé Clé + clé étrangère Relation clé Contrainte d’intégrité référentielle 20

Institut Mines-Télécom Correspondance directe (n° 1) - suite Janvier 2014 Document code titre auteur annee empruntable emprunte nbEmprunts Audio code classification Video code dureeFilm mentionLegale Livre code nbPages Relation clé Contrainte d’inté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 ; VueDocument code titre auteur annee empruntable emprunte nbEmprunts Typedoc Classification nombrePages Durrefilm Mentionlegale Vue Construction de la vue par requête 21

Institut Mines-Télécom Correspondance directe pour la médiathèque Janvier 2014 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 Solution retenue pour le TP VueDocument code titre … 22

Institut Mines-Télécom Correspondance directe et typologie des arbres d’héritage 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 pour tout arbre d’héritage Janvier

Institut Mines-Télécom Correspondance ascendante (n° 2) ■ Chaque classe spécialisée  une relation BD ■ Classe parent  une vue ■ Correspondance de l’arbre de Document Janvier 2014 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 24

Institut Mines-Télécom Correspondance ascendante pour la médiathèque ■ Une vue n’est pas une relation BD ! ●Pas de clé  non référençable par une clé étrangère Janvier 2014 Audio code Video code Livre code Document code FicheEmpruntAudio code nom prenom Client nom prenom FicheEmpruntVideo code nom prenom FicheEmpruntLivre code nom prenom FicheEmprunt 25

Institut Mines-Télécom Correspondance ascendante et typologie des arbres d’héritage Janvier 2014 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)  Difficile d’assurer l’unicité des identificateurs 26

Institut Mines-Télécom Correspondance par aplatissement (n° 3.1) ■ Ensemble des classes de la hiérarchie  une seule relation BD ■ Éventuellement chaque classe « enfant »  une vue ■ Correspondance de l’arbre de Document Janvier 2014 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 27

Institut Mines-Télécom Correspondance par aplatissement 3.1 pour la médiathèque Janvier 2014 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 28

Institut Mines-Télécom Correspondance par aplatissement 3.1 et typologie des arbres d’héritage 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 29 Janvier 2014

Institut Mines-Télécom Correspondance par aplatissement 3.2 pour la médiathèque ■ Variante de la correspondance 3.1 avec utilisation d’un attribut booléen supplémentaire par classe enfant ■ Si un document pouvait être à la fois un Audio et une Vidéo Janvier 2014 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 30

Institut Mines-Télécom Correspondance par aplatissement 3.2 et typologie des arbres d’héritage Spécialisation Remarques TotalePartiellePartitionRecouvrement OK Si tous les attributs booléens correspondant aux classes enfants sont autorisés à FAUX/NULL Non pertinent 3.1 OKidem 3.1 Janvier

Institut Mines-Télécom QCM – Vrai ou faux ■ Y a t-il toujours un modèle relationnel « correspondant » à un diagramme de classes ? ■ Le nombre de relations dans le modèle relationnel est-il égal au nombre de classes dans le diagramme de classes ? ■ Une classe abstraite est-elle toujours traduite par une vue ? ■ S’il existe plusieurs modèles relationnels « correspondant » à un diagramme de classes, je choisis au hasard : il n’y a pas de critère de choix ? Janvier

Institut Mines-Télécom Plan du document 1. Motivations 2. Quel schéma de Base de Données Relationnelle ? 3. Gérer la persistance dans Java : JDBC 1.Qu’est ce que JDBC ? 2.Que faire pour pouvoir utiliser JDBC ? 3.Principaux objets mis en œuvre 1.Tuyaux de communication : Connection et Statement 2.Exécution d’une requête : ResultSet 3.Correspondance de type 1.Exemple sur les chaînes de caractères 2.Correspondance de type SQL/Java 4.Étapes d’interaction avec le SGBD 5.Politique de gestion de la persistance 4. Conclusion Janvier

Institut Mines-Télécom Qu’est 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 34 Janvier 2014 SGBD Application java Pilote Protocole du SGBD

Institut Mines-Télécom 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 d’utiliser JDBC : Class.forName("oracle.jdbc.OracleDriver"); Class.forName("com.mysql.jdbc.Driver" ); Class.forName("org.postgresql.Driver" ); Janvier

Institut Mines-Télécom Tuyaux de communication : Classe Connection et Statement Janvier 2014 Application java Pilote PostgreSQL SGBD PostgresSQL Statement statement1 « SELECT * FROM Document » Statement statement2 Statement statement3 Media : Mediatheque Nom : string …. Connection Constructeur() rechercheBD() miseAJourBD() Destructeur() 36

Institut Mines-Télécom Exécution d’une requête : Classe ResultSet Janvier 2014 Application java Pilote MySQL SGBD PostgresSQL Localisation Statement stmt1 ResultSet rset = stmt1.executeQuery ("select * from localisation"); media : Mediatheque Nom : string …. lesLocalisations: collection 37

Institut Mines-Télécom Correspondance de types : Exemple sur les chaînes de caractères Janvier 2014 Application java String salle SGBD PostgresSQL Localisation salle : varchar(20) Statement stmt1 rset contient "select * from localisation"; while (rset.next()) { … String salle = rset.getString("salle"); … } 38

Institut Mines-Télécom Correspondance de type SQL/Java (1) Janvier

Institut Mines-Télécom Correspondance de type SQL/Java (2) ■ Pas de booléen en bases de données ! ■ Document : ■ empruntable et emprunte : boolean dans le diagramme de classe ■ empruntable et emprunte : integer dans la base de données ResultSet rset = stmt.executeQuery("select * from document"); while (rset.next()) { … boolean empruntable = rset.getInt("empruntable") > 0; boolean emprunte = rset.getInt("emprunte") > 0; … } Janvier

Institut Mines-Télécom Étapes d’interaction avec le SGBD 1. Ouvrir une connexion ●Instance de Connection 2. Créer des « fils » pour supporter l’envoi d’instructions SQL au sein de la connexion ●Requête non paramétrée dans une instance de Statement ●Requête paramétrée dans une instance de PreparedStatement INSERT INTO localisation (salle, rayon) values (?, ?) 3. Demander l’exécution de ces instructions par le SGBD : ●Requête d’interrogation (SELECT) : méthode executeQuery() sur le *Statement ●Requête de mise à jour ( INSERT, UPDATE, DELETE ) : méthode executeUpdate() sur le *Statement 4. Fermer la connexion : méthode close() sur la connexion 41 Janvier 2014

Institut Mines-Télécom 1. É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

Institut Mines-Télécom 2 et 3. Exécuter une requête de mise à jour (1) private void insererBD(Document doc) throws OperationImpossible { try { PreparedStatement stmt; 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 } Janvier

Institut Mines-Télécom 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); } Janvier

Institut Mines-Télécom QCM - Vrai/faux ■ Puis-je me passer de « driver » pour interagir avec le SGBD ? ■ Dois-je créer une connexion (objet Connection ) à chaque fois que je dois interagir avec le SGBD et la refermer après chaque interaction ? ■ Faut –il, en fonction du type de requête SQL à exécuter, choisir judicieusement la méthode execute* à utiliser ■ Un ResultSet peut-il contenir de nombreux « tuples » ? ■ Les types Java et les types de bases de données correspondent-ils parfaitement ? ■ La méthode prepareStatement est-elle utilisée pour les requêtes paramétrées ? Janvier

Institut Mines-Télécom 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 d’opérations à modifier) ●Quel(s) objet(s) charger et quand ? ●Quel(s) objet(s) décharger et quand ? Janvier

Institut Mines-Télécom Chargement / déchargement (1) ■ Chargement ●Constructeur d’objet 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 d’objet (nécessité d’une clé pour sélectionner l’objet) −Charger les objets connexes ■ Déchargement ●Statique : à la fin du programme (attention aux pertes d’information) ●Dynamique : dans les opérations de mise à jour Janvier

Institut Mines-Télécom 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 Janvier

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

Institut Mines-Télécom Conclusion ■ Pour un diagramme de classes ●Plusieurs modèles relationnels pour la persistance ●Savoir choisir ■ Schéma relationnel ●Relation + attributs avec des domaines + clé + contraintes d’intégrité ■ JDBC : une solution technique ●« bas » niveau ■ Canevas logiciels industriels ●Hibernate, TopLink ●Proposition de modèles de persistance ●Méthodes « haut » niveau pour interagir avec le SGBD Janvier