Top Banner
Institut Mines-Télécom age 1 Gestion de la persistance des objets CSC4002 Claire Lecocq 2012
37

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

Apr 03, 2015

Download

Documents

Danielle Metais
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Institut Mines-Télécom Page 1 Gestion de la persistance des objets CSC4002 Claire Lecocq 2012.

Institut Mines-TélécomPage 1

Gestion de la persistance des objets

CSC4002

Claire Lecocq

2012

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

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

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

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

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

Institut Mines-TélécomPage 4

Problématique en image

2012

Stockage des données

Application

Mapping chargement

déchargement

UMLDéveloppement

Objet

Modèle E/ARelationnel

SGBD

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

Institut Mines-TélécomPage 5

Plan du document

■Motivations■Quel schéma de Base de Données Relationnelle ?

● Processus de conception d’une 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 l’héritage1

● Traduction de l’héritage en modèle relationnel

■Gérer la persistance dans Java : JDBC

2012

1 la généralisation/spécialisation est appelée dans ce cours héritage

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

Institut Mines-TélécomPage 6

Processus de conception d’une 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 SGB

DSpécifique à un SG

BD

Prise en compte des particularités du SGBD

Contrat

E/A UML

Placement DisqueOptimisation

RelationnelRéseauHiérarchique

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

Institut Mines-TélécomPage 7

Entité/Association versus diagrammes de classes et d’objets 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 d’association

(Héritage), association « est un » << Héritage – Généralisation, spécialisation

Clé

Identité d’objet

Attribut calculé Attribut dérivé

Opération

Cardinalités Cardinalités, multiplicités

Attribut d’une entité de paramètres

Attributs de classe

2012

Modèles de conception

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

Institut Mines-TélécomPage 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 d’un schéma E/A vers un schéma relationnel

■ Problème hypothèse 1 : héritage

2012

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

Institut Mines-TélécomPage 9

Diagramme de classes de la médiathèque

2012

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

Institut Mines-TélécomPage 10

Revenons sur la sémantique de l’hé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

Personnenomprénomadresse

TotaleRecouvrement

Personne = Etudiant SalarieEtudiant Salarié

TotalePartition

Salarie = Prive PublicPrive Public =

EtudiantnoEtudcycle

Salariesalaire

Publicindice

Priveprime

X

Doctorantvacataire

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

Institut Mines-TélécomPage 11

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

■ Ne s’appliquent pas à toutes les typologies d’arbre d’héritage

● totale/partielle● partition/recouvrement

2012

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

Institut Mines-TélécomPage 12

Correspondance directe (n° 1)

■Une classe une relation BD

■Liaison entre les relations se fait via la clé

■Correspondance de l’arbre de Document

2012

DocumentcodetitreauteuranneeempruntableempruntenbEmprunts

Audiocodeclassification

VideocodedureeFilmmentionLegale

LivrecodenbPages

Créationd’une clé

Clé + clé étrangère

Relationclé

Contrainte d’intégritéréférentielle

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

Institut Mines-TélécomPage 13

Correspondance directe (n° 1) - suite

2012

DocumentcodetitreauteuranneeempruntableempruntenbEmprunts

Audiocodeclassification

VideocodedureeFilmmentionLegale

LivrecodenbPages

Relationclé

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 ;

DocumentcodetitreauteuranneeempruntableempruntenbEmpruntsTypedocClassificationnombrePagesDurrefilmMentionlegale

Vue

Construction de la vue par requête

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

Institut Mines-TélécomPage 14

Correspondance directe pour la médiathèque

2012

DocumentcodetitreauteuranneeempruntableempruntenbEmpruntsnomGenresallerayon

Audiocodeclassification

VideocodedureeFilmmentionLegale

LivrecodenbPages

GenrenomnbEmprunts

Localisationsallerayon

Clientnomprenom adresse nbEmpruntsEffectuesnbEmpruntsDepasses

nbEmpruntsEnCours catclient dateInscription codeReduction dateRenouvellement

CategorienomnbEmpruntsMaxtarifInscriptioncoefDureecoefTarifcodeReducUsed

FicheEmpruntnomprenom code dateEmprunt dateLimite

depasse

Dénormalisation

Solution retenue pour le TP

Documentcodetitre…

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

Institut Mines-TélécomPage 15

Spécialisation Spécialisation Remarques

Totale Partielle Partition Recouvrement

OK

Vérification : 1 tuple de la « relation

parent » est toujours

référencé par 1 tuple de la « relation enfant »

OK 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 d’arbre d’héritage

2012

Correspondance directe et typologie des arbres d’héritage

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

Institut Mines-TélécomPage 16

Correspondance ascendante (n° 2)

■Chaque classe spécialisée une relation BD

■Classe parent une vue

■Correspondance de l’arbre de Document

2012

CREATE VIEW Document AS SELECT code, titre, auteur, annee, empruntable, emprunte, nbEmprunts FROM AudioUNION SELECT code, titre, auteur, annee, empruntable, emprunte, nbEmprunts FROM VideoUNION SELECT code, titre, auteur, annee, empruntable, emprunte, nbEmprunts FROM Livre

DocumentcodetitreauteuranneeempruntableempruntenbEmprunts

AudiocodetitreauteuranneeempruntableempruntenbEmpruntsclassification

VideocodetitreauteuranneeempruntableempruntenbEmpruntsdureeFilmmentionLegale

LivrecodetitreauteuranneeempruntableempruntenbEmpruntsnbPages

Vue

Construction de la vue par requête

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

Institut Mines-TélécomPage 17

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

2012

Audiocode

Videocode

Livrecode

Documentcode

FicheEmpruntAudiocodenomprenom

Clientnomprenom

FicheEmpruntVideocodenomprenom

FicheEmpruntLivrecodenomprenom

FicheEmprunt

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

Institut Mines-TélécomPage 18

Correspondance ascendante et typologie des arbres d’héritage

2012

Spécialisation Spécialisation Remarques

Totale Partielle Partition Recouvrement

OK KO OK KO

Redondance de données

Multiplie les relations

Évite les jointures pour reconstruire les objets

Spécialisation totale. Classe abstraite = vue (relation virtuelle)

Pas possible d’assurer simplement l’unicité des identificateurs

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

Institut Mines-TélécomPage 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 l’arbre de Document

2012

CREATE VIEW Audio ASSELECT code, titre, auteur, annee, empruntable, emprunte, nbEmprunts, classificationFROM DocumentWHERE typeDocument=‘Audio’

DocumentcodetitreauteuranneeempruntableempruntenbEmpruntstypeDocumentclassificationdureeFilmmentionLegalenbPages

Audiocode…classification

Videocode…dureeFilmmentionLegale

Livrecode…nbPages

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

Institut Mines-TélécomPage 20

Correspondance par aplatissement 3.1 pour la médiathèque

2012

DocumentcodetitreauteuranneeempruntableempruntenbEmpruntsnomGenresallerayontypeDocumentclassificationdureeFilmmentionLegalenbPages

GenrenomnbEmprunts

Localisationsallerayon

Clientnomprenom adresse nbEmpruntsEffectuesnbEmpruntsDepassesnbEmpruntsEnCourstypeClientdateInscriptiondateRenouvellementcodeReduction

dateCotisation

FicheEmpruntnomprenom code dateEmprunt dateLimite

depasse

Solution retenue pour le TP

CategorienomnbEmpruntsMaxtarifInscriptioncoefDureecoefTarifcodeReducUsed

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

Institut Mines-TélécomPage 21

Correspondance par aplatissement 3.1 et typologie des arbres d’héritage

2012

Spécialisation Spécialisation Remarques

Totale Partielle Partition Recouvrement

OK OK

Si attribut donnant le nom de la

classe autorisé à

null

OK KO É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

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

Institut Mines-TélécomPage 22

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 …

2012

CREATE VIEW Audio ASSELECT code, titre, auteur, annee, empruntable, emprunte, nbEmprunts, classificationFROM DocumentWHERE AudioB = 1

DocumentcodetitreauteuranneeempruntableempruntenbEmpruntsAudioBVideoBLivreBClassificationdureeFilmmentionLegalenbPages

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

Institut Mines-TélécomPage 23

Spécialisation Spécialisation Remarques

Totale Partielle Partition Recouvrement

OK OKSi tous les

attributs booléens correspondant

aux classes enfants sont

autorisés à NULL

Non pertinent OK idem 3.1

2012

Correspondance par aplatissement 3.2 et typologie des arbres d’héritage

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

Institut Mines-TélécomPage 24

Plan du document

■Motivations

■Quel schéma de Base de Données Relationnelle ?

■Gérer la persistance dans Java : JDBC● Qu’est ce que JDBC ?● Que faire pour pouvoir utiliser JDBC ?● Étapes d’interaction avec le SGBD● Politique de gestion de la persistance

2012

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

Institut Mines-TélécomPage 25

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−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 javaPilote

Protocole du SGBD

Type 4

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

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

Class.forName("com.mysql.jdbc.Driver" );

Class.forName("org.postgresql.Driver" );

2012

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

Institut Mines-TélécomPage 27

É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 dans une instance de Statement, PreparedStatement ou CallableStatement

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● autre ordre SQL (appel de procédure stockée) :

execute() sur le *Statement4. Fermer la connexion : méthode close() sur la connexion

2012

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

Institut Mines-TélécomPage 28

Connection versus Statement

2012

Application java

Pilo

te M

ySQ

L

SGBDPostgresSQL

Statement statement1 « SELECT * FROM Document »

Statement statement2

Statement statement3

Media : Mediatheque

Nom : string….Connection : @Connection

Constructeur()rechercheBD()miseAJourBD()Destructeur()

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

Institut Mines-TélécomPage 29

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

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

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

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

Institut Mines-TélécomPage 31

2 et 3. Exécuter une requête SELECT Méthode executeQuery()

■executeQuery() renvoie une instance de ResultSet

■L’instance 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 d’une conversion

explicite

2012

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

Institut Mines-TélécomPage 32

Correspondance de type SQL/Java

Type SQL Méthode recommandée

numeric Java.Math.BigDecimal GetBigDecimal()

integer int getInt()

float double getDouble()

char, varchar String getString()

date java.sql.Date getDate() java.util.Date

2012

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

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

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

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

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

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

d’opérations à modifier)● Quel(s) objet(s) charger et quand ?● Quel(s) objet(s) décharger et quand ?

2012

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

Institut Mines-TélécomPage 36

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’infos)● Dynamique : dans les opérations de mise à jour

2012

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

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