Gestion de la persistance des objets - … · Quel schéma de Base de Données Relationnelle ? 3....

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

Transcript of Gestion de la persistance des objets - … · Quel schéma de Base de Données Relationnelle ? 3....

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

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

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

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

3. Gérer la persistance dans Java : JDBC

4. Conclusion

Janvier 2014

1 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ép

endan

t du S

GB

D

Spécifiq

ue à

un S

GB

D

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

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

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

héritage

Institut Mines-Télécom

Diagramme de classes de la médiathèque

Janvier 2014 10

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

1,1

0,n

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

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

tout arbre d’héritage

Janvier 2014 23

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

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

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 Spécialisation Remarques

Totale Partielle Partition Recouvrement

OK OK

Si tous les

attributs

booléens

correspondant

aux classes

enfants sont

autorisés à

FAUX/NULL

Non pertinent

3.1

OK idem 3.1

Janvier 2014 31

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

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

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

Institut Mines-Télécom

Tuyaux de communication : Classe Connection et Statement

Janvier 2014

Application java

Pilo

te P

ostg

reS

QL

SGBD

PostgresSQL

Statement statement1

« SELECT * FROM Document »

Statement statement2

Statement statement3

Media : Mediatheque

Nom : string

….

Connection : @Connection

Constructeur()

rechercheBD()

miseAJourBD()

Destructeur()

36

Institut Mines-Télécom

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

Janvier 2014

Application java

Pilo

te M

yS

QL

SGBD

PostgresSQL

Localisation

Statement stmt1

ResultSet rset =

stmt1.executeQuery

("select * from

localisation");

media : Mediatheque

Nom : string

….

lesLocalisations: collection

de @Localisation

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)

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

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

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

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

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

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

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

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

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

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