gestion de la persistance des objets

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

Upload: dacey

Post on 24-Feb-2016

89 views

Category:

Documents


0 download

DESCRIPTION

Gestion de la persistance des objets. CSC4002 Claire Lecocq. 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 Conclusion. Application exemple : la médiathèque. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Gestion de la persistance des objets

Institut Mines-Télécom

Gestion de la persistance des objets

CSC4002Claire Lecocq

Janvier 2014

Page 2: Gestion de la persistance des objets

Institut Mines-Télécom

Plan du document

1. Motivations1. Application exemple : la médiathèque2. Problématique en image

2. Quel schéma de Base de Données Relationnelle ?3. Gérer la persistance dans Java : JDBC4. Conclusion

Janvier 20142

Page 3: Gestion de la persistance des objets

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 20143

Page 4: Gestion de la persistance des objets

Institut Mines-Télécom

Problématique en image

Janvier 2014

Stockage des données

Application

Mapping chargement

déchargement

UMLDéveloppement

Objet

Modèle E/ARelationnel

SGBD

4

Page 5: Gestion de la persistance des objets

Institut Mines-Télécom

Plan du document

1. Motivations2. 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éritage1

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

3. Gérer la persistance dans Java : JDBC4. Conclusion

Janvier 2014

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

5

Page 6: Gestion de la persistance des objets

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 SGB

DSpécifique à un SG

BD

Prise en compte des particularités du SGBD

Contrat

E/A UML

Placement DisqueOptimisation

RelationnelRéseauHiérarchique

6

Page 7: Gestion de la persistance des objets

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 20147

Page 8: Gestion de la persistance des objets

Institut Mines-Télécom

Hypothèse 1 : Correspondance E/A diagramme de classes

SI-BDEntité/Association

Génie logiciel - langagesDiagramme de classes

Entité Classe

Entité faible Composition

Association sans attribut Association

Association avec attribut(s) Classe d’association

Pas de correspondance Hé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

Page 9: Gestion de la persistance des objets

Institut Mines-Télécom

Hypothèse 1 : Correspondance E/A diagramme de classes

SI-BDEntité/Association

Génie logiciel - langagesDiagramme de classes

Entité Classe

Entité faible Composition

Association sans attribut Association

Association avec attribut(s) Classe d’association

Pas de correspondance Hé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èmehéritage

Page 10: Gestion de la persistance des objets

Institut Mines-Télécom

Diagramme de classes de la médiathèque

Janvier 201410

Page 11: Gestion de la persistance des objets

Institut Mines-Télécom

Traduction du diagramme en dehors de l’arbre d’héritage

■Classe façade

11 Janvier 2014

Page 12: Gestion de la persistance des objets

Institut Mines-Télécom

Traduction du diagramme en dehors de l’arbre d’héritage

■Classes persistantes

12 Janvier 2014

Page 13: Gestion de la persistance des objets

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

Page 14: Gestion de la persistance des objets

Institut Mines-Télécom

Traduction du diagramme en dehors de l’arbre d’héritage

■Modèle entité/association

14 Janvier 2014

Genrenom : varchar(20)nbEmprunts : integer

Localisationsalle : varchar(20)rayon : varchar(5)

Clientnom : varchar(20)prenom : varchar(20)adresse : varchar(20)nbEmpruntsEffectues : integernbEmpruntsDepasses : integernbEmpruntsEnCours : integerdateInscription : datecodeReduction : integerdateRenouvellement : date

Categorienom : varchar(20)nbEmpruntsMax : integertarifInscription : floatcoefDuree : floatcoefTarif : floatcodeReducUsed : integer

FicheEmpruntdateEmprunt : datedateLimite : datedepasse : integer

correspondre

appartenir

1,1

1,1

0,n

0,n

Page 15: Gestion de la persistance des objets

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

Genrenom : varchar(20)nbEmprunts : integer

Localisationsalle : varchar(20)rayon : varchar(5)

Clientnom prenom adressenbEmpruntsEffectuesnbEmpruntsDepassesnbEmpruntsEnCours dateInscriptioncodeReductiondateRenouvellementcatclient

CategorienomnbEmpruntsMaxtarifInscriptioncoefDureecoefTarif codeReducUsed

FicheEmpruntdateEmprunt dateLimitedepassenomprenom

Page 16: Gestion de la persistance des objets

Institut Mines-Télécom

Il reste la partie la plus intéressante : l’arbre d’héritage !

16 Janvier 2014

Genrenom : varchar(20)nbEmprunts : integer

Localisationsalle : varchar(20)rayon : varchar(5)

Clientnom prenom adressenbEmpruntsEffectuesnbEmpruntsDepassesnbEmpruntsEnCours dateInscriptioncodeReductiondateRenouvellementcatclient

CategorienomnbEmpruntsMaxtarifInscriptioncoefDureecoefTarif codeReducUsed

FicheEmpruntdateEmprunt dateLimitedepassenomprenom

Page 17: Gestion de la persistance des objets

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

Personnenomprénomadresse

Partielle

Personne Etudiant Salarie

Totale

Salarie = Prive Public

EtudiantnoEtudcycle

Salariesalaire

Publicindice

Priveprime

X

17

Dans les cours UML et Java, les termes utilisés sont classes concrètes* et classes abstraites*

Page 18: Gestion de la persistance des objets

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

Personnenomprénomadresse

Recouvrement

Etudiant Salarié

Partition

Prive Public =

EtudiantnoEtudcycle

Salariesalaire

Publicindice

PriveprimeDoctorant

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++)

Page 19: Gestion de la persistance des objets

Institut Mines-Télécom

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

■ 3 correspondances possibles :1. Correspondance directe2. Correspondance ascendante3. Correspondance par aplatissement

3.1. Pour partition3.2. Pour recouvrement

Janvier 201419

Page 20: Gestion de la persistance des objets

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

DocumentcodetitreauteuranneeempruntableempruntenbEmprunts

Audiocodeclassification

VideocodedureeFilmmentionLegale

LivrecodenbPages

Créationd’une clé

Clé + clé étrangère

Relationclé

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

20

Page 21: Gestion de la persistance des objets

Institut Mines-Télécom

Correspondance directe (n° 1) - suite

Janvier 2014

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 ;

VueDocumentcodetitreauteuranneeempruntableempruntenbEmpruntsTypedocClassificationnombrePagesDurrefilmMentionlegale

Vue

Construction de la vue par requête

21

Page 22: Gestion de la persistance des objets

Institut Mines-Télécom

Correspondance directe pour la médiathèque

Janvier 2014

DocumentcodetitreauteuranneeempruntableempruntenbEmpruntsnomGenresallerayon

Audiocodeclassification

VideocodedureeFilmmentionLegale

LivrecodenbPages

GenrenomnbEmprunts

Localisationsallerayon

Clientnomprenom adresse nbEmpruntsEffectuesnbEmpruntsDepasses

nbEmpruntsEnCours catclient dateInscription codeReduction dateRenouvellement

CategorienomnbEmpruntsMaxtarifInscriptioncoefDureecoefTarifcodeReducUsed

FicheEmpruntnomprenomcode dateEmprunt dateLimite

depasse

Solution retenue pour le TP

VueDocumentcodetitre…

22

Page 23: Gestion de la persistance des objets

Institut Mines-Télécom

Correspondance directe et typologie des arbres d’héritage

Spécialisation Spécialisation Remarques

Totale Partielle Partition Recouvrement

OKVérification : 1

tuple de la « relation

parent » est toujours

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

OK OKVé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 201423

Page 24: Gestion de la persistance des objets

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

24

Page 25: Gestion de la persistance des objets

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

Audiocode

Videocode

Livrecode

Documentcode

FicheEmpruntAudiocodenomprenom

Clientnomprenom

FicheEmpruntVideocodenomprenom

FicheEmpruntLivrecodenomprenom

FicheEmprunt

25

Page 26: Gestion de la persistance des objets

Institut Mines-Télécom

Correspondance ascendante et typologie des arbres d’héritage

Janvier 2014

Spécialisation Spécialisation Remarques

Totale Partielle Partition Recouvrement

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

Page 27: Gestion de la persistance des objets

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 ASSELECT code, titre, auteur, annee, empruntable, emprunte, nbEmprunts, classificationFROM DocumentWHERE typeDocument=‘Audio’

DocumentcodetitreauteuranneeempruntableempruntenbEmpruntstypeDocumentclassificationdureeFilmmentionLegalenbPages

Audiocode…classification

Videocode…dureeFilmmentionLegale

Livrecode…nbPages

27

Page 28: Gestion de la persistance des objets

Institut Mines-Télécom

Correspondance par aplatissement 3.1 pour la médiathèque

Janvier 2014

DocumentcodetitreauteuranneeempruntableempruntenbEmpruntsnomGenresallerayontypeDocumentclassificationdureeFilmmentionLegalenbPages

GenrenomnbEmprunts

Localisationsallerayon

Clientnomprenom adresse nbEmpruntsEffectuesnbEmpruntsDepassesnbEmpruntsEnCourstypeClientdateInscriptiondateRenouvellementcodeReduction

dateCotisation

FicheEmpruntnomprenom code dateEmprunt dateLimite

depasse

Solution retenue pour le TP

CategorienomnbEmpruntsMaxtarifInscriptioncoefDureecoefTarifcodeReducUsed

28

Page 29: Gestion de la persistance des objets

Institut Mines-Télécom

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

Spécialisation Spécialisation Remarques

Totale Partielle Partition Recouvrement

OK OKSi 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

29 Janvier 2014

Page 30: Gestion de la persistance des objets

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 ASSELECT code, titre, auteur, annee, empruntable, emprunte, nbEmprunts, classificationFROM DocumentWHERE AudioB = 1

DocumentcodetitreauteuranneeempruntableempruntenbEmpruntsAudioBVideoBLivreBClassificationdureeFilmmentionLegalenbPages

30

Page 31: Gestion de la persistance des objets

Institut Mines-Télécom

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

Spécialisation Spécialisation Remarques

Totale Partielle Partition Recouvrement

OK OKSi tous les attributs booléens

correspondant aux classes enfants sont autorisés à FAUX/NULL

Non pertinent3.1

OK idem 3.1

Janvier 201431

Page 32: Gestion de la persistance des objets

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 201432

Page 33: Gestion de la persistance des objets

Institut Mines-Télécom

Plan du document

1. Motivations2. 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 Statement2. Exécution d’une requête : ResultSet3. Correspondance de type

1. Exemple sur les chaînes de caractères2. Correspondance de type SQL/Java

4. Étapes d’interaction avec le SGBD5. Politique de gestion de la persistance

4. ConclusionJanvier 201433

Page 34: Gestion de la persistance des objets

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 javaPilote

Protocole du SGBD

Page 35: Gestion de la persistance des objets

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.sqlimport 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 201435

Page 36: Gestion de la persistance des objets

Institut Mines-Télécom

Tuyaux de communication : Classe Connection et Statement

Janvier 2014

Application java

Pilo

te P

ostg

reS

QL

SGBDPostgresSQL

Statement statement1 « SELECT * FROM Document »

Statement statement2

Statement statement3

Media : Mediatheque

Nom : string….Connection : @Connection

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

36

Page 37: Gestion de la persistance des objets

Institut Mines-Télécom

Exécution d’une requête :Classe ResultSet

Janvier 2014

Application java

Pilo

te M

ySQ

L SGBDPostgresSQL

Localisation

Statement stmt1

ResultSet rset = stmt1.executeQuery ("select * from localisation");

media : Mediatheque

Nom : string….lesLocalisations: collection de @Localisation

37

Page 38: Gestion de la persistance des objets

Institut Mines-Télécom

Correspondance de types : Exemple sur les chaînes de caractères

Janvier 2014

Application java

String salle

SGBDPostgresSQL

Localisation

salle : varchar(20)

Statement stmt1 rset contient "select * from localisation";

while (rset.next()) { … String salle = rset.getString("salle"); …}

38

Page 39: Gestion de la persistance des objets

Institut Mines-Télécom

Correspondance de type SQL/Java (1)

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

Janvier 201439

Page 40: Gestion de la persistance des objets

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 201440

Page 41: Gestion de la persistance des objets

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 PreparedStatementINSERT 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 connexion41 Janvier 2014

Page 42: Gestion de la persistance des objets

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

Page 43: Gestion de la persistance des objets

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 201443

Page 44: Gestion de la persistance des objets

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 201444

Page 45: Gestion de la persistance des objets

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 201445

Page 46: Gestion de la persistance des objets

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 201446

Page 47: Gestion de la persistance des objets

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 201447

Page 48: Gestion de la persistance des objets

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 201448

Page 49: Gestion de la persistance des objets

Institut Mines-Télécom

Plan du document

1. Motivations1. Application exemple : la médiathèque2. Problématique en image

2. Quel schéma de Base de Données Relationnelle ?3. Gérer la persistance dans Java : JDBC4. Conclusion

Janvier 201449

Page 50: Gestion de la persistance des objets

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 201450