diapositives-persistance

publicité
Gestion de la
persistance des objets
CSC4002
Claire Lecocq
Institut Mines-Télécom
Janvier 2014
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
2
Institut Mines-Télécom
Janvier 2014
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 ?
3
Institut Mines-Télécom
Janvier 2014
Problématique en image
Application
UML
Développement
Objet
Mapping
chargement

Stockage des données
déchargement
Modèle E/A
Relationnel
SGBD
4
Institut Mines-Télécom
Janvier 2014
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
1
5
la généralisation/spécialisation est appelée dans ce cours héritage
Institut Mines-Télécom
Janvier 2014
Processus de conception d’une BD
(rappel)
Besoin de la BD
Prise en compte
des
particularités du
SGBD
Contrat
Conception logique
Schéma conceptuel (haut niveau)
E/A UML
Indépendant du SGBD
Monde
réel
Recueil des besoins et analyse
Transformation du modèle
Conception physique
Schéma physique (spécifique SGBD)
6
Institut Mines-Télécom
Placement
Disque
Optimisation
Janvier 2014
Spécifique à
un SGBD
Schéma conceptuel (spécifique SGBD)
Relationnel
Réseau
Hiérarchique
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
●
7
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
Institut Mines-Télécom
Janvier 2014
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é


8
Attribut dérivé
Opération
Cardinalités

Multiplicités
Attribut d’une entité de
paramètres

Attributs de classe
Institut Mines-Télécom
Janvier 2014
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é

Problème
héritage
Attribut dérivé
Opération
Cardinalités

Multiplicités
Attribut d’une entité de
paramètres

Attributs de classe
9
Institut Mines-Télécom
Janvier 2014
Diagramme de classes de la médiathèque
10
Institut Mines-Télécom
Janvier 2014
Traduction du diagramme en dehors de
l’arbre d’héritage
■ Classe façade
11
Institut Mines-Télécom
Janvier 2014
Traduction du diagramme en dehors de
l’arbre d’héritage
■ Classes persistantes
12
Institut Mines-Télécom
Janvier 2014
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
Institut Mines-Télécom
Janvier 2014
Traduction du diagramme en dehors de
l’arbre d’héritage
■ Modèle entité/association
Localisation
salle : varchar(20)
rayon : varchar(5)
Genre
nom : varchar(20)
nbEmprunts : integer
FicheEmprunt
dateEmprunt : date
dateLimite : date
depasse : integer
1,1
correspondre
0,n
Client
nom : varchar(20)
prenom : varchar(20)
adresse : varchar(20)
nbEmpruntsEffectues : integer
nbEmpruntsDepasses : integer 1,1
nbEmpruntsEnCours : integer
dateInscription : date
codeReduction : integer
dateRenouvellement : date
14
Institut Mines-Télécom
Categorie
nom : varchar(20)
nbEmpruntsMax : integer
tarifInscription : float
coefDuree : float
coefTarif : float
codeReducUsed : integer
0,n
appartenir
Janvier 2014
Hypothèse 2 : Traduction du diagramme
en dehors de l’arbre d’héritage
■ Modèle relationnel
Localisation
salle : varchar(20)
rayon : varchar(5)
Genre
nom : varchar(20)
nbEmprunts : integer
FicheEmprunt
dateEmprunt
dateLimite
depasse
nom
prenom
Client
nom
prenom
adresse
nbEmpruntsEffectues
nbEmpruntsDepasses
nbEmpruntsEnCours
dateInscription
codeReduction
dateRenouvellement
catclient
15
Institut Mines-Télécom
Categorie
nom
nbEmpruntsMax
tarifInscription
coefDuree
coefTarif
codeReducUsed
Janvier 2014
Il reste la partie la plus intéressante :
l’arbre d’héritage !
Localisation
salle : varchar(20)
rayon : varchar(5)
Genre
nom : varchar(20)
nbEmprunts : integer
FicheEmprunt
dateEmprunt
dateLimite
depasse
nom
prenom
Client
nom
prenom
adresse
nbEmpruntsEffectues
nbEmpruntsDepasses
nbEmpruntsEnCours
dateInscription
codeReduction
dateRenouvellement
catclient
16
Institut Mines-Télécom
Categorie
nom
nbEmpruntsMax
tarifInscription
coefDuree
coefTarif
codeReducUsed
Janvier 2014
Revenons sur la sémantique de l’héritage
(1)
■ Spécialisation peut
être :
Personne
nom
prénom
adresse
● Partielle* : une instance
peut ne pas être
spécialisée
Personne 
Etudiant  Salarie
Partielle
X
● Totale** : toute instance
est spécialisée dans au
moins une classe enfant
Etudiant
noEtud
cycle
Salarie
salaire
Totale
Prive
prime
Public
indice
Salarie = Prive  Public
Dans les cours UML et Java, les termes utilisés sont classes concrètes* et classes abstraites*
17
Institut Mines-Télécom
Janvier 2014
Revenons sur la sémantique de l’héritage
(2)
■ Spécialisation peut
être :
Personne
nom
prénom
adresse
● 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
Etudiant  Salarié  
Recouvrement
Etudiant
noEtud
cycle
Salarie
salaire
Partition
Doctorant
vacataire
Prive
prime
Prive  Public = 
•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++)
18
Institut Mines-Télécom
Janvier 2014
Public
indice
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
19
Institut Mines-Télécom
Janvier 2014
Correspondance directe (n° 1)
■ Une classe  une relation BD
■ Liaison entre les relations se fait via la clé
■ Correspondance de l’arbre de Document
Document
code
titre
auteur
annee
empruntable
emprunte
nbEmprunts
Création
d’une clé
Relation
clé
Audio
code
classification
Clé +
clé étrangère
20
Institut Mines-Télécom
Video
code
dureeFilm
mentionLegale
Contrainte
d’intégrité
référentielle
Livre
code
nbPages
Janvier 2014
Correspondance directe (n° 1) - suite
VueDocument
code
titre
auteur
annee
empruntable
emprunte
nbEmprunts
Typedoc
Classification
nombrePages
Durrefilm
Mentionlegale
Audio
code
classification
21
create view vueDocument(code, titre, auteur, annee,
empruntable, emprunte, salle,rayon,nomGenre,nbEmprunts,
typedoc, classification, nombrePages, dureeFilm, mentionLegale)
as
select document.code, titre, auteur, annee, empruntable,
emprunte, salle,rayon,nomGenre,nbEmprunts,'Audio',
classification, null, null, null
from audio, document
where audio.code = document.code
union
select document.code, titre, auteur, annee, empruntable,
emprunte, salle,rayon,nomGenre,nbEmprunts,'Video', null, null,
dureeFilm, mentionLegale
from video, document
where video.code = document.code
union
select document.code, titre, auteur, annee, empruntable,
emprunte, salle,rayon,nomGenre,nbEmprunts,'Livre', null,
nombrePages, null, null
from livre, document
where livre.code = document.code ;
Document
code
titre
auteur
annee
empruntable
emprunte
nbEmprunts
Video
code
dureeFilm
mentionLegale
Institut Mines-Télécom
Livre
code
nbPages
Relation
clé
Contrainte
d’intégrité
référentielle
Vue
Construction
de la vue
par requête
Janvier 2014
Correspondance directe pour la
médiathèque
VueDocument
code
titre
…
Audio
code
classification
Video
code
dureeFilm
mentionLegale
Livre
code
nbPages
Genre
nom
nbEmprunts
22
Document
code
titre
auteur
annee
empruntable
emprunte
nbEmprunts
nomGenre
salle
rayon
Localisation
salle
rayon
Institut Mines-Télécom
FicheEmprunt
nom
prenom
code
dateEmprunt
dateLimite
depasse
Client
nom
prenom
adresse
nbEmpruntsEffectues
nbEmpruntsDepasses
nbEmpruntsEnCours
catclient
dateInscription
codeReduction
dateRenouvellement
Categorie
nom
nbEmpruntsMax
tarifInscription
coefDuree
coefTarif
codeReducUsed
Solution retenue pour le TP
Janvier 2014
Correspondance directe et typologie des
arbres d’héritage
Spécialisation
23
Spécialisation
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 :
nonduplication de
clé entre
« relations
enfants »
OK
Institut Mines-Télécom
Remarques
 Reconstitution de
l'objet par jointure
 Sémantique très
proche du modèle
objet
 Fonctionne pour
tout arbre d’héritage
Janvier 2014
Correspondance ascendante (n° 2)
■ Chaque classe spécialisée  une relation BD
■ Classe parent  une vue
■ Correspondance de l’arbre de Document
Document
code
titre
auteur
annee
empruntable
emprunte
nbEmprunts
Audio
code
titre
auteur
annee
empruntable
emprunte
nbEmprunts
classification
24
Institut Mines-Télécom
Video
code
titre
auteur
annee
empruntable
emprunte
nbEmprunts
dureeFilm
mentionLegale
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
Livre
code
titre
auteur
annee
empruntable
emprunte
nbEmprunts
nbPages
Vue
Construction
de la vue
par requête
Janvier 2014
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
Document
code
25
Audio
code
FicheEmpruntAudio
code
nom
prenom
Video
code
FicheEmpruntVideo
code
nom
prenom
Livre
code
FicheEmpruntLivre
code
nom
prenom
Institut Mines-Télécom
Client
nom
prenom
FicheEmprunt
Janvier 2014
Correspondance ascendante et typologie
des arbres d’héritage
Spécialisation
Spécialisation
Totale
Partielle
Partition
Recouvrement
OK
KO
OK
KO
Redondance
de données
Remarques
 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
Janvier 2014
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
Document
code
titre
auteur
annee
empruntable
emprunte
nbEmprunts
typeDocument
classification
dureeFilm
mentionLegale
nbPages
Audio
code
…
classification
27
Institut Mines-Télécom
Video
code
…
dureeFilm
mentionLegale
CREATE VIEW Audio AS
SELECT code, titre, auteur, annee,
empruntable, emprunte, nbEmprunts,
classification
FROM Document
WHERE typeDocument=‘Audio’
Livre
code
…
nbPages
Janvier 2014
Correspondance par aplatissement 3.1
pour la médiathèque
Genre
nom
nbEmprunts
Localisation
salle
rayon
Document
code
titre
auteur
annee
empruntable
emprunte
nbEmprunts
nomGenre
salle
rayon
typeDocument
classification
dureeFilm
mentionLegale
nbPages
FicheEmprunt
nom
prenom
code
dateEmprunt
dateLimite
depasse
Client
nom
prenom
adresse
nbEmpruntsEffectues
nbEmpruntsDepasses
nbEmpruntsEnCours
typeClient
dateInscription
dateRenouvellement
codeReduction
dateCotisation
Categorie
nom
nbEmpruntsMax
tarifInscription
coefDuree
coefTarif
codeReducUsed
Solution retenue pour le TP
28
Institut Mines-Télécom
Janvier 2014
Correspondance par aplatissement 3.1 et
typologie des arbres d’héritage
Spécialisation
Spécialisation
Totale
Partielle
Partition
Recouvrement
OK
OK
Si attribut
donnant le
nom de la
classe
autorisé à
null
OK
KO
Remarques
 É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
Institut Mines-Télécom
Janvier 2014
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
Document
code
titre
auteur
annee
empruntable
emprunte
nbEmprunts
AudioB
VideoB
LivreB
Classification
dureeFilm
mentionLegale
nbPages
30
Institut Mines-Télécom
CREATE VIEW Audio AS
SELECT code, titre, auteur, annee,
empruntable, emprunte, nbEmprunts,
classification
FROM Document
WHERE AudioB = 1
Janvier 2014
Correspondance par aplatissement 3.2 et
typologie des arbres d’héritage
Spécialisation
31
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
Institut Mines-Télécom
idem 3.1
Janvier 2014
QCM – Vrai ou faux
■ Y a t-il toujours un modèle relationnel
■
■
■
32
« 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
?
Institut Mines-Télécom
Janvier 2014
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.
2.
Exemple sur les chaînes de caractères
Correspondance de type SQL/Java
4. Étapes d’interaction avec le SGBD
5. Politique de gestion de la persistance
4. Conclusion
33
Institut Mines-Télécom
Janvier 2014
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)
Application java
Pilote
− Dépendants des SGBDs cibles
− « Tout » SGBD a un pilote JDBC
Protocole
du SGBD
SGBD
34
Institut Mines-Télécom
Janvier 2014
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" );
35
Institut Mines-Télécom
Janvier 2014
Tuyaux de communication :
Classe Connection et Statement
Media : Mediatheque
Nom : string
….
Connection : @Connection
Constructeur()
rechercheBD()
miseAJourBD()
Destructeur()
36
Pilote PostgreSQL
Application java
Institut Mines-Télécom
Statement statement1
« SELECT * FROM Document »
Statement statement2
SGBD
PostgresSQL
Statement statement3
Janvier 2014
Exécution d’une requête :
Classe ResultSet
Application java
Nom : string
….
lesLocalisations: collection
de @Localisation
37
Pilote MySQL
media : Mediatheque
Institut Mines-Télécom
Statement stmt1
ResultSet rset =
stmt1.executeQuery
("select * from
localisation");
SGBD
PostgresSQL
Localisation
Janvier 2014
Correspondance de types :
Exemple sur les chaînes de caractères
Application java
Statement stmt1
rset contient
"select * from localisation";
while (rset.next()) {
…
String salle =
rset.getString("salle");
…
}
String salle
38
Institut Mines-Télécom
SGBD
PostgresSQL
Localisation
salle :
varchar(20)
Janvier 2014
Correspondance de type SQL/Java (1)
Type SQL
numeric
integer
float
char, varchar
date
39
Institut Mines-Télécom
Méthode recommandée
Java.Math.BigDecimal getBigDecimal()
int getInt()
double getDouble()
String getString()
java.sql.Date getDate()  java.util.Date
Janvier 2014
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;
…
}
40
Institut Mines-Télécom
Janvier 2014
É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
Institut Mines-Télécom
Janvier 2014
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);
}
Institut Mines-Télécom
2012
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
}
43
Institut Mines-Télécom
Janvier 2014
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
" + e);
}
}
44
Institut Mines-Télécom
BD-
Janvier 2014
QCM - Vrai/faux
■ Puis-je me passer de « driver » pour interagir avec le
■
■
■
■
■
45
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 ?
Institut Mines-Télécom
Janvier 2014
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 ?
46
Institut Mines-Télécom
Janvier 2014
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
47
Institut Mines-Télécom
Janvier 2014
Chargement / déchargement (2)
■ Statique
● Adapté aux petits volumes de données
● Faible taux de mises à jour
● Simple à mettre en œuvre
■ Dynamique
●
●
●
●
48
Adapté aux volumes de données importants
Fort taux de mises à jour
Meilleure résistance aux fautes
Plus compliqué à programmer
Institut Mines-Télécom
Janvier 2014
Plan du document
1. Motivations
2.
3.
4.
49
1. Application exemple : la médiathèque
2. Problématique en image
Quel schéma de Base de Données Relationnelle ?
Gérer la persistance dans Java : JDBC
Conclusion
Institut Mines-Télécom
Janvier 2014
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
50
Institut Mines-Télécom
Janvier 2014
Téléchargement