Persistance des objetsPersistance des objets et bases de ...

chuckleelephantbutteSoftware and s/w Development

Jun 9, 2012 (5 years and 2 months ago)

903 views

Master MIDO -2ème année
Spécialité
ID/MIAGE
-
IF/MIAGE
-
SITN
Spécialité

ID/MIAGE
-
IF/MIAGE
-
SITN
Persistancedesobjets
Persistance

des

objets

et bases de données relationnelles
(Object Relational Mapping)
Maude Manouvrier
Partie 1 : Introduction -Problématique générale

Partie2:Noncorrespondancedesmodèles
Partie

2

:

Non

correspondance

des

modèles
Partie 3 : Modèle de persistance DAO (Data Access Object)

便
Hibernate
Java
PersistanceAPI
(JPA
)

便





Hibernate
-
Java

Persistance

API

(JPA
)
Bibliographie
[BK07]JavaPersistencewithHibernate,RevisedEditionof
HibernateinAction,deChristianBauerandGavinKing,Manning
Publications
2007
Publications
,
2007
[Pat08]JavaPersistenceetHibernate,d’AnthonyPatricio,Eyrolles,
2008
[BK05]Hibernate,deChristianBaueretGavinKing,CampusPress,
2005–TraductiondeHibernateinActiondesmêmesauteurs
[Pat05]Hibernate3.0:Gestionoptimaledelapersistancedansles
applicationsJava/J2EE,deAnthonyPatricio,Eyrolles,2005
[Fow03]PatternsofEntrepriseApplicationArchitecture,deMartin
Fowler,AddisonWesley,2003
[Spe03]JavaPersistenceforRelationalDatabases,deRichard
Sperko,Apress,2003
Él
ilié
é
Gi
d
l
i

É
ga
l
ementut
ili
s
é
p
ou
r
p
r
é
pare
r
cecours:
G
est
i
on
d
e
l
apes
i
stance
avecHibernate-ManueldeCours,deValtechTraining,2005
©Maude Manouvrier -Univ. Paris Dauphine
2
Documents en ligne
Documentation Hibernateen ligne: http://www.hibernate.org/5.html
Traduction en fran
ç
ais de la Documentation Hibernateen li
g
ne:
ç
g
http://docs.jboss.org/hibernate/stable/core/reference/fr-FR/html/
[Gri09]SupportsdecoursducoursBasesdedonnéesavancées-Partie1
d
Rihd
Gi
2009
d
e
Ri
c
h
ar
d
G
r
i
n,
2009
http://deptinfo.unice.fr/~grin/mescours/minfo/modpersobj/supports/index.html

Mapping
Objects
to
Relational
Databases
:O/R
Mapping
In
Detail
de

Mapping
Objects
to

Relational
Databases
:

O/R

Mapping
In

Detail
,
de

Scott W. Ambler, 2006 http://www.agiledata.org/essays/mappingObjects.html
[Fus97]Foundationsof Objec
t
-RelationalMapping, de Mark L. Fussell, 1997
http://www.database-books.us/databasesystems_0003.php

イ率






http://cyrille-herby.developpez.com/tutoriels/java/mapper-sa-base-donnees-avec-pattern-dao/
http://arodrigues.developpez.com/tutoriels/java/performance/hibernate-performance-part1-
strategies-chargement/

隷「ﵡョーュエイ便ﱳェﵥﹴ

隷「ﵡョ

ﱯ

ﴯ視ィ異﹡」
http://objetdirect.developpez.com/articles/java/hibernate/strategies-heritage/
http://java.developpez.com/faq/hibernate/
©Maude Manouvrier -Univ. Paris Dauphine
3
Pti1Itdti
P
ar
ti
e
1
:
I
n
t
ro
d
uc
ti
on
Problématique générale
Définition de la persistance
Définition de l’ORM (Object/Relational Mappin
g
)

Architecturemulti
-
couches
Architecture

multi
couches
Couche de persistance
Solutions ORM
©Maude Manouvrier -Univ. Paris Dauphine
4
Persistance des objets
et bases de données relationnelles
Majoritédebasesdedonnéesrelationnelles(position
dominante
sur
le
marché
théorie
solide
et
normes
dominante
sur
le
marché
,
théorie
solide
et
normes
reconnues)
Nb
liti
délé
l
d

N
om
b
reusesapp
li
ca
ti
ons

ve
l
opp
é
esen
l
angage
d
e
programmationorienté-objet
ModélisationUML

Comment effectuer la persistance des données d’une
a
pp
lication orientée ob
j
et dans une base de
ppj
données relationnelles ?
©Maude Manouvrier -Univ. Paris Dauphine
5
Problématique
Propriétés à conserver :

Objetscomplexes
Objets

complexes
Identification des objets
Encapsulation
Classes
Hiérarchie de classes

ﱹﵯ

ﱹﵯ
Navigation dans le graphe d’objets
Cache objet
Adaptateur
d’impédance
Propriétés à ajouter :
Persistance
Interrogation
Gestion de la concurrence

拾﹮
淚オ便﹩拾葉
Figure reprise de http://www.objectarchitects.de/tu2002/slides/VL8ChoosingDatabaseTechnology.pdf
6





拾



﹮
Gestion de la mémoire secondaire
Persistance

Mécanisme
permettant
à
un
objet
de
Mécanisme
permettant
à
un
objet
de
survivreauprocessusquil’acréé
[BK05]
Caractéristiques:

Stockage
organisation
et
récupération

Stockage
,
organisation
et
récupération
desdonnéesstructurées(tri,agrégation)
•Concurrenceetintégritédesdonnées

Partage
des
données

Partage
des
données
©Maude Manouvrier -Univ. Paris Dauphine
7
ORM : Ob
j
ec
t
/
R
elational Ma
pp
in
g

j
ppg
Persistanceautomatiséeettrans
p
arented’ob
j
ets
p
j
métiersversunebasesdedonnéesrelationnelles
[BK05]

Description
à
l

aide
de
méta
-
données
de
la
Description
à
laide
de
méta
données
de
la
transformationréversible
entreunmodèlerelationnel
etunmodèledeclasses
[BK05,Pat05]
Capacitéàmanipulerdesdonnéesstockéesdansune
base
de
données
relationnelles
à
l

aide
d

un
langage
de
base
de
données
relationnelles
à
laide
dun
langage
de
programmationorientée-objet

﹩

ァﵭ說
ﹴ

ﱩ
ﱥ

﹩

ァﵭ說
ﹴ

ﱩ
ﱥ
ョﻩﱡョ﹥ﱬョ



ﵭ說

オ便﹥

ョﻩ


イ便ﹴ便「贈ﱬ
ﭗ參殺率
淚オ便﹩拾葉

Architecture multi-couches
©Maude Manouvrier -Univ. Paris Dauphine
9
Figure issue de [Ros03]
Architecturemulti
-
couches
Architecture

multi
-
couches
Couchedeprésentation:logiquede
l

interface
utilisateur
linterface
utilisateur

Couche
métier
:
représentation
des
objets
Couche
métier
:
représentation
des
objets
métier–modèledesentitésmétier
Coucheservices:traitementsreprésentant
les
règles
métier
les
règles
métier
©Maude Manouvrier -Univ. Paris Dauphine
10
Couche d’accès au données
Couche de persistance
Priseenchargedetouteslesinteractionsentre
l’applicationetlabasededonnées
[Ros03]
Groupesdeclassesetdecomposantschargésdu
stocka
g
eetdelarécu
p
érationdesdonnées
[
B
K
05
]
g
p
[
]
Possibilitédeservirdecachepourlesobjets
récupérés
dans
la
base
de
données
pour
récupérés
dans
la
base
de
données
pour
améliorerlesperformances
[Gri09]

葉

ﵯﱥ

﷩
﹮便




葉

ﵯﱥ

﷩

﹮便



ﵡ葉﷩
淚オ便﹩拾葉

Couche de persistance :
àlhddél(1/3)
à

l
a c
h
arge
d
u

ve
l
oppeur
(1/3)
Possibilitéde
p
ro
g
rammermanuellementunecouchede
pg
persistanceavecSQL/JDBC(JavaDataBaseConnectivity)
Possibilitédemas
q
uerleJDBCcom
p
lexeetleS
Q
Lnon
q
p
Q
portableàlalogiquemétierparunmodèledeconception
(ex.activerecord)
Service de
Modèle métier
Stratégie de
persistance
transactionnel
BD
p
ersistance non
transparente
SQL
Business
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [BK05] et [Pat05]
12
Couche de persistance : à la charge du développeur (2/3)
2
niveaux
de
qualité
[F
97
]
:
2
niveaux
de
qualité
[F
us
97
]
:
Relationnelpur:

Application
entièrement
conçue
autour
du
modèle
relationnel
et
des
opérations
Application
entièrement
conçue
autour
du
modèle
relationnel
et
des
opérations
relationnellesréaliséesenSQL
•Modèleutilisédanslecasd’applicationssimplessansnécessitéderéutilisationde
code
•Utilisationd’EmbeddedSQLouSQLJetdeprocéduresstockées⇒décharged’une
partiedutravaildelacouchemétierverslabasededonnées
−Man
q
uede
p
ortabilitéetdemaintenanceàlon
g
terme
q
p
g
Correspondanceobjetlégère(LightObjectMapping):
•Corres
p
ondancecodéemanuellemententrelesclassesetlesrelationsdela
b
asede
p
données
•MasquageduSQL/JDBCprogrammémanuellementparl’utilisationdemodèlesde
conception(designpattern)connu–ex.activerecord
•Utilisée
p
ou
r
desapplicationsayantun
p
etitnombred’entités
•Utilisationdeprocéduresstockées −Cou
p
la
g
etro
p
fortentrelesclassesmétiersetlesu
pp
ortde
p
ersistance
pg
p
pp
p
utilisé
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Fus97], [BK05], [Pat05] et [Gri09]
13
Couche de persistance : à la charge du développeur (3/3)
Ati
d
(tif/t
d
ti
di
tt
)
A
c
ti
verecor
d
(
mo
tif/
pa
t
ron
d
econcep
ti
on

d
es
i
gnpa
tt
ern
)
:

«Anobjectthatwrapsarowinadatabasetableorview,encapsulates
thedatabaseaccess,andaddsdomainlogiconthatdata»
Partie"Modèle"del'architecture"ModèleVueContrôleur"
Correspondancedechaquerelationdelabaseavecladéfinitiond'une
classe
:
chaque
colonne
de
la
relation
=
une
propriété
de
la
classe
classe
:
chaque
colonne
de
la
relation
une
propriété
de
la
classe
Correspondancedechaquenupletdelarelationavecuneinstancedela
classecorrespondante:
création
d
'
un
nouvel
objet

楮獥牴楯i
d
’

湯當敬
湵灬整
摡湳

牥污瑩潮
捲瑩潮
摵n
湯當敬
潢橥o

楮獥牴楯i
摵n
湯當敬
湵灬整
摡湳

牥污瑩潮
Méthodesstatiquesdeclassesagissantsurl'ensembledesnuplets
RequêtesCRUD(Create,Read,Update,Delete)pouvantêtregénérées
ttit
au
t
oma
ti
quemen
t
Enseignant
numen
nom
nom
prénom

insert
update
tNbHEit
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de http://www.martinfowler.com/eaaCatalog/activeRecord.html
,
http://www.supinfo-projects.com/fr/2006/active%5Frecord/1/
et http://fr.wikipedia.org/wiki/Active_record_(motif_de_conception)
14
ge
tNbH
eures
E
nse
i
gnemen
t
s

Couche de persistance :
dbjt/ltil(1/3)
avec correspon
d
ance o
bj
e
t/
re
l
a
ti
onne
l

(1/3)
Utilisationdelacouchede
p
ersistancecommeunservice
p
rendantabstraitelareprésentationrelationnelle
indispensableaustockagefinaldesobjets
Concentrationdudéveloppeursurles
p
roblématiques
métier
Mappingobjet
relationnel
BD
Modèlemétier
Stratégie de
Mapping

objet
-
relationnel
BD
Modèle

métier
p
ersistance
«transparente»
Business
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [BK05] et [Pat05]
15
Couche de persistance : avec correspondance
ob
j
et
/
relationnel
(
2
/
3
)
j/(/)
2niveauxdequalité
[Fus97]
:

﹤
「贈
ﵯ便﹮

Medium
Object
Mapping
)
:

﹤
「贈
ﵯ便﹮

Medium
Object
Mapping
)
:
•Applicationconçueautourd’unmodèleobjet
•SQLgénéréàlacompilationparunoutildegénérationdecodeouàl’exécutionpar
l
d
d
l’til
d
d
(
i
fk
)
l
eco
d
e
d
e
l’
ou
til
d
ecorrespon
d
ance
(
mapp
i
n
g
f
ramewor
k
)
•Objetsmisencacheparlacouchedepersistance
•Pourdesapplicationsdetaillemoyenneincluantdestransactionscomplexes
•Ex.EJB1.x
/
2.xEntityBeans
Correspondanceobjetcomplète(FullObjectMapping):
Pi
t
d
tt
l
iété
bjt
iti
héit

P
r
i
seencomp
t
e
d
e
t
ou
t
es
l
es
p
ropr
iété
so
bj
e
t
s:compos
iti
on,

r
it
age,
polymorphisme,persistanceparaccessibilité
•Persistancepresquetransparentepourledéveloppeur
P
d’héit
d’
l
d
b
l
l
itt
i
d’itf

P
as
d’hé
r
it
age
d’
unec
l
asse
d
e
b
ase
p
a
r
l
esc
l
asses
p
ers
i
s
t
an
t
es,n
i
d’i
n
t
er
f
ace
spéciale
•Stratégied’extractionefficace(précoceoutardive)etstratégiesdemiseencache
implémentées
de
manière
transparente
implémentées
de
manière
transparente
•Ex.EJB3.0Persistency
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Fus97], [BK05], [Pat05] et [Gri09]
16
Couche de persistance : avec correspondance
objet/relationnel (3/3)
Persistance
p
resque
transparente
©Maude Manouvrier -Univ. Paris Dauphine
17
Repris de
http://www.service-architecture.com/object-relational-mapping/articles/transparent_persistence.html
Solutions ORM (1/2)
NormesJava:
EJB(EntrepriseJavaBeans):
•Gestiondelapersistanceparconteneur(CMP-Container-ManagedPersistenceetBMP
–BeansManagedPersistence)

Spécifications
EJB
3
0
(JSR
220
Mai
2006
)

Spécifications
EJB
3
.
0
(JSR
220
Mai
2006
)
JDO(JavaDataObject):
•SpécificationdeSun1999–JDO2.0(JSR243Mars2006)
•Abstractiondusu
pp
ortdestocka
g
e
pp
g
•Implémentationlibre:JPOX
JPA(JavaPersistenceAPI):PartiedesspécificationsEJB3.0(JSR220enMai2006-JSR
316encours)concernantlapersistancedescomposants
ImplémentationdeJPA:
Hibernate(JBoss):Solutionlibrefaisantpartieduserveurd’appli.JBoss–version3.3
implémentantlesspécificationsJSR220–complèteetbiendocumentée-pluginEclipse-
Gavin
King
(fondateur)
membre
de
groupes
d

expert
d

EJB
3
Gavin
King
(fondateur)
membre
de
groupes
dexpert
dEJB
3
TopLink(Oracle):Solutionpropriétaireutiliséeparlaserveurd’applicationd’Oracle-
TopLinkEssentials:versionlibredisponibledansNetbeans5.5ouleserveurd’application
(JavaEE5)GlassfishdeSun,integréedansleprojetEclipseLink(version107/2008)
OpenJPA(Apache),Cayenne(Apache)…
"Comparaison " des solutions ORM :
http://se.ethz.ch/projects/shinji_takasaka/master_thesis_shinji_takasaka.pdf
http://terrazadearavaca.blogspot.com/2008/12/jpa-implementations-comparison.html
http://java.dzone.com/news/hibernate-best-choice?page=2
©Maude Manouvrier -Univ. Paris Dauphine
Repris et adapté de [Gri09], [Pat05] et de perso.enst-bretagne.fr/~ptanguy/CNAM/CNAM_persistance_objet_JDO_2.pdf
18
Pourquoi on étudiera la norme JPA ?
Nb d’offres sur le site français :

祖





祖
35 pour JDO
Graphiques issus de http://www.indeed.com/
-3 Oct. 2011
Pourquoi on étudiera Hibernate?
Nb d’offres sur le site français :
2041 pour Hibernate
31
TLik

31
pour
T
op
Li
n
k
0 pour les autres
20
Graphiques issus de http://www.indeed.com/
-3 Oct. 2011
Solutions ORM (2/2)
Objectifs
:
Objectifs
:
Automatiseretfaciliterlacorrespondanceentrelesdonnéesstockées
dansdesobjetsetunebasededonnéesrelationnelles
Rechercheetenregistrementdesdonnéesassociéesàunobjetdansune
basededonnées
Détectiondelamodificationd’unob
j
etetenre
g
istrementdesmisesà
j
g
jou
r
enoptimisantlesaccèsàla
b
ase
+Moinsdecoderépétitifàécrire:gainde30à40%dunombredelignesde
code
+AméliorationdelaportabilitéducodeencasdechangementdeSGBD
+Développementobjet(sanspenserentermerelationnel)
+Possibilitéd’avoi
r
unmodèleobjetfin(pouvantnécessite
r
uncodageàla
maincomplexepourlapersistance)
+Refactorisation
(
Re
f
actorin
g)
duschémadela
b
asededonnéesoud
u
(fg)
modèleobjetfacilité
-Pasoptimalpourdesapplicationsmodifiantbeaucoupdenupletsàchaque
up
dateoucom
p
ortantessentiellementdesre
q
uêtesd’a
g

g
ation
(
g
rou
p
p
p
q
gg
(
gp
by)–Ex.OLAPoudatamining
©Maude Manouvrier -Univ. Paris Dauphine -Repris et adapté de [Gri09]
21
Partie2:Noncorrespondancedes
Partie

2

:

Non

correspondance

des

modèlesobjetetrelationnel
modèles

objet

et

relationnel

﹩ョﲒ
Impedancemismatch

﹩ョ




Impedance

mismatch
Exemple simple de correspondance
Identification des objets
Tdidii

T
ra
d
uct
i
on
d
es assoc
i
at
i
ons
Traduction de l’hérita
g
e
g
Navigation dans le graphe d’objets
Objet dépendant
©Maude Manouvrier -Univ. Paris Dauphine
22
Non correspondance des modèles
objet et relationnel
Impedance mismatch

Entrée:modèleobjet
Entrée

:

modèle

objet
Sortie : modèle relationnel

Problèmesdecorrespondance:
Problèmes

de

correspondance

:
•Identification des objets

Traductiondesassociations
Traduction

des

associations
•Traduction de l’héritage

Navigationentrelesobjets

Navigation

entre

les

objets
•Objets dépendants
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
23
Figure reprise de http://www.service-architecture.com/object-oriented-databases/articles/impedance_mismatch.html
Exemple simple de correspondance
public classDepartement implementsjava.io.Serializable {
//ild
Implémentation POJO (Plain Old Java Object)de la classe Departement:
//
F
i
e
ld
s
private intdepartementId;
privateString nomDepartement;
/** default constructor */
public
D
epartement() {}
/** fullconstructor */
publicDepartement(intdepartementId, String nomDepartement) {
t
his
.
d
e
p
artementI
d
=
de
p
artementId;
p
p
this.nomDepartement= nomDepartement;
}
// Property accessors

}
Relation de bases de données Departement:
CREATE TABLEDepartement
(
departement_id int4 NOT NULL,
nomde
p
artement varchar
(
25
)
NOT NULL
©Maude Manouvrier -Univ. Paris Dauphine
24
Clé primaire ??
_
p()
)
1. Identification des objets (1/5)
Danslemondeobjet:
difii
d
bj
ld
d
l
l
I
d
ent
ifi
cat
i
on
d
eso
bj
ets
p
ar
l
’a
d
resse
d
e
l
euremp
l
acement
mémoire


﹯ョ
沈



﹯ョ
沈

ﹴ若a==b(notiondéfinieparlamachine
virtuelle
Java)
virtuelle
Java)
•"Égalité"ouéquivalence:méthodeequals()à
im
p
lémenterdanslaclasse
p
Danslemodèlerelationnel:

磻ョ

﹵


ﱥ



省

磻ョ

﹵


ﱥ



省
Pasdepossibilitéd’avoirdeuxnupletsaveclesmêmes
valeurs
dans
une
relation
valeurs
dans
une
relation
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
25
1. Identification des objets (2/5)
En
cas
d

utilisation
d

un
SGBD
relationnel
-
objet
(ex
.
PostgreSQL)
:
En
cas
dutilisation
dun
SGBD
relationnel
objet
(ex
.
PostgreSQL)
:
Ajoutautomatiqued’unattributOIDpourdistinguerlesnuplets
(utilisécommecléprimairedanslesrelationssystème)
Possibilitédelechoisircommecléprimairedansunerelation
utilisateur
d
CREATE TABLE
d
epartement
(
departement_id int4 NOT NULL,
nomdepartementvarchar(25)
NOTNULL
,
nom_departement

varchar(25)

NOT

NULL
,
CONSTRAINTpk_departement PRIMARY KEY(oid)
)
WITH OIDS;
©Maude Manouvrier -Univ. Paris Dauphine
26
1. Identification des objets (3/5)
Encasd’utilisationd’unSGBDrelationnelpur:
Préférer les clés primaires sans contrepartie dans le monde
réel ou clé de substitution (ou artificielle -surrogate key)
Pouréviterlescléscomposéesdeplusieursattributs
Pourfaciliterl’indexation
(
ex.unentierincrémenté
(
automatiquement)
Pourfaciliterlesmisesàjour(nepasavoiràchangertoutes
lesclésétrangèresyfaisantréférence)
Pouréliminerlelienaveclemodèlemétier
Pensernéanmoinsàassurerlacohérencedesdonnéesen
ajoutant
une
contrainte
d

unicité
pour
les
attributs
!
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
27
ajoutant
une
contrainte
dunicité
pour
les
attributs
identificateursmétier
1. Identification des objets (4/5)
Objet persistant = représentation en mémoire d’un nuplet
!
Unmêmenupletnedoitpasêtrereprésentépar
plusieursobjetsenmémoirecentralepourunemême
i
d
il
sess
i
on
d
etrava
il
Exemple:
Créationenmémoired’unobjet
e
1
delaclasse
E
nseignant(à
l’occasiond’unenavigationàpartird’unobjetEnseignement)
Possibilitéderetrouverlemêmeenseignantdepuisunautre
Ensei
g
nementoude
p
uisun
D
é
p
artement
g
p
p

Nepascréerd’objete2enmémoirecentraleindépendantdee1

Ut
ili
sat
i
o
n
du

cac
h
e

Utilisation

du

cache
"Index" des objets créés en mémoire
(avec conservation de l’identité relationnelle –clé primaire)
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
28
Recherche dans le cache avant toute récupération dans la base
1. Identification des objets (5/5
)
)
Différencedegranularitéentrelesdeuxmodèles
Différence

de

granularité

entre

les

deux

modèles
Modèle objet de granularité plus fine :

"
+declassesquederelations
"


+

de

classes

que

de

relations

•Instances de plusieurs classes (dépendantes) sauvegardés
danslamêmerelation
dans

la

même

relation
Ex.
Utilisateur
Adresse
⇒Pas d’obligation de créer une relation Adressedans la base
Si insertion des attributs de Adresse dans la relation Utilisateur


Possibilitéd

utiliserles
UserDefinedType
deSQL99
mais
des objets Adressesans identificationliée à la base

Possibilité

dutiliser

les

User

Defined

Type
de

SQL99


mais

problème de compatibilité et de standardisation dans les SGBD
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
29
2. Traduction des associations (1/5
)
)
Danslemondeobjet:

Association
=
ensemble
de
liens
entre
objets
Association
ensemble
de
liens
entre
objets
3typesdereprésentation:
•variabled’instancedetypeobjet(multiplicité1ou*..1)
ibl
d’i
d
lli
d’bj
(liliié
1
*
*)
•var
i
a
bl
e
d’i
nstance
d
etypeco
ll
ect
i
on
d’
o
bj
ets
(
mu
l
t
i
p
li
c
i
t
é
1
..
*
ou
*)
•Classe-association(multiplicité*)
Référencesd’ob
j
et
p
a
r
natureunidirectionnelle
j
p
PasdedéductiondelamultiplicitéàpartirdelaclasseJava(sicodage
unidirectionnel)
Danslemodèlerelationnel
Représentationdesassociationspar:

Une
ou
plusieurs
clés
étrangères
(multiplicité
1
ou
*
1
ou
1
*
)
Une
ou
plusieurs
clés
étrangères
(multiplicité
1
ou
..
1
ou
1
..
)
•Unerelationdontlacléprimaireestcomposéedeclésétrangères
(multiplicité*):tabledeliaisonoutabled’association
Bi
diti
jit
t
l
lti
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
30

Bi
-
di
rec
ti
on
p
a
r
j
o
i
n
t
ureen
t
re
l
esre
l
a
ti
ons
Déductiondelamultiplicitéparanalysedeladéfinitiondesclésétrangères
2. Traduction des associations (2/5
)
)
Automobiliste
Automobiliste
NSS:string
Nom: string
1
Possède
*
Voiture
immatriculation:string
blil
bili
{


pu
bli
c c
l
assAutomo
bili
ste
{
// Fields
private StringNSS;
privateString nom;
i
llii
bil
De Automobiliste
pr
i
vate
C
o
ll
ect
i
on<Vo
i
ture> parc_automo
bil
e
;

}
vers Voiture
public classVoiture{
// Fields
private Stringimmatriculation;
p
riv
ate
A
uto
m
ob
ili
ste
p
r
op
ri
eta
ir
e
;
De Voiture vers
bl
©Maude Manouvrier -Univ. Paris Dauphine
31
pate
utoobste
popetae
;

}
A
utomo
b
i
l
iste
2. Traduction des associations (3/5
)
)
Automobiliste
Voiture
NSS:string
Nom: string

1
Possède
*
Voiture
immatriculation:string

CREATE TABLEAutomobilsite
( Automobiliste_IDSERIAL,
NSS
varchar(
10
)
NOTNULL
NSS
varchar(
10
)

NOT

NULL
,
Nomvarchar(20)NOT NULL,

CONSTRAINTPK_AutomobilistePRIMARY KEY(Automobiliste_ID),
);
)

;
CREATE TABLEVoiture
( Voiture_IDSERIAL,
I
mmatriculation
v
archar
(
1
0
)
NOT NULL
,
(
)
,

Proprietaire_IDintNOT NULL,
CONSTRAINTPK_AutomobilistePRIMARY KEY(Voiture_ID),
CONSTRAINT
PK
AutomobilisteVoiture
©Maude Manouvrier -Univ. Paris Dauphine
32
CONSTRAINT
PK_
Automobiliste
_
Voiture
FOREIGN KEY(Proprietaire_ID) REFERENCESAutomobiliste(Automobiliste_ID)
);
2. Traduction des associations (4/5
)
)
Automobiliste
Voiture
NSS:string
nom:string
*
immatriculation:string

*

Location
date:Date
public classLocation{
privateAutomobilisteloueur;
privateVoiturevehicule;
private
Date
date
;
private
Date

date
;

}
CREATE TABLELocation
(…
CONSTRAINTPK_LocationPRIMARY KEY(Automobiliste_ID,Voiture_ID, Date),
CONSTRAINTFK_Location_Voiture
FOREIGN KEY(Voiture_ID) REFERENCESVoiture(Voiture_ID),
©Maude Manouvrier -Univ. Paris Dauphine
33
CONSTRAINTFK
_
Location_Automobiliste
FOREIGN KEY(Automobiliste_ID) REFERENCESAutomobiliste(Automobiliste_ID),
);
2. Traduction des associations (5/5
)
)

Gestion
des
associations
plus
complexe
en
objet
Gestion
des
associations
plus
complexe
en
objet
qu’enrelationnel
Ex
Modification
d

un
propriétaire
de
voiture
Ex
.
Modification
dun
propriétaire
de
voiture
⇒Modificationdelavaleurdelacléétrangèredanslarelation
Voiture
⇒Suppressionduvéhiculecorrespondantdanslacollection
parc_automobiledel’objetJavaAutomobiliste
+miseà
j
ourdel’instance
p
ro
p
rietairedel’ob
j
et
j
pp
j
Voiture
Gestionautomati
q
uedansEJB2.x
q
ChoixdenerienautomatiserdansEJB3.0
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
34
3. Traduction de l’héritage (1/5
)
)
Plusieursméthodes:
1
i
d
l
l
d
l
hiéhi
à
l
1
.Fa
i
recorrespon
d
retoutes
l
esc
l
asses
d
e
l
a
hié
rarc
hi
e
à
uneseu
l
e
relationdebasesdedonnées
2.
Représenter
chaque
classe
(abstraite
ou
concrète)
par
une
relation
2.
Représenter
chaque
classe
(abstraite
ou
concrète)
par
une
relation
3.Représenterchaqueclasseconcrèteparunerelation
M
embreUniversité
Étudiant
Enseignant
Administratif
Maîtrede
Professeur
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
35
Maître

de

Conférences
Professeur
3. Traduction de l’héritage (2/5
)
)
1
Correspondance
de
toutes
les
classes
de
la
hiérarchie
avec
une
1
.
Correspondance
de
toutes
les
classes
de
la
hiérarchie
avec
une
seulerelationdebasesdedonnées:
Ex
une
relation
MembreUniversité
avec
les
attributs
de
Ex
.
une
relation
MembreUniversité
avec
les
attributs
de
chaqueclasse+unattributtype
+
Facile
à
mettre
en
place
+
Facile
à
mettre
en
place
+Possibilitéderequêtesetassociationspolymorphes

佢汩条瑩潮deg敲摥dv慬敵牳乕䱌灯畲灬畳楥畲p
捯汯湮敳

偡Pde灯獳楢楬楴p摥擩捬慲敲畮uc潮瑲慩湴o乏N乕䱌
獵s畮u摥捥cc潬潮湥omêsilac潮瑲慩湴o摯楴ê瑲t
盩物晩
ꥍ慵摥⁍慮潵癲楥爠©U湩n.⁐慲楳⁄慵灨楮攠 repris et adapté de [Gri09] et [BK05]
36
vérifiée
3. Traduction de l’héritage (3/5
)
)
2.Représentationdechaqueclasse(abstraiteouconcrète)par
unerelation:
⇒Répartitiondesattributsd’unobjetdansplusieursrelations
Ex.1objetProfesseurcorrespondàunnupletdanslarelation
EnseignantetàunnupletdanslarelationProfesseur

Préservation
de
l

identité
en
donnant
la
même
valeur
de
clé

偲敲癡瑩潮

li摥湴楴d

摯湮慮d

淪浥
癡汥畲

捬c
灲業慩牥àc桡煵h湵灬整c潲牥獰潮摡湴àl鉯扪整摡湳汥l
摩晦敮瑥d牥污瑩潮r
⇒Clésprimairesdesrelationscorrespondantesauxclasses
filles=clésétrangèresfaisantréférenceàlacléprimairede
larelationcorrespondantàlaclassemèreEx.lacléprimairedelarelationProfesseuretaussiuneclé
étrangère
qui
fait
référence
à
la
clé
primaire
de
la
relation
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
37
étrangère
qui
fait
référence
à
la
clé
primaire
de
la
relation
Enseignant
3. Traduction de l’héritage (4/5)
2.Représentationdechaqueclasse(abstraiteouconcrète)
p
ar
unerelation(suite):
+
卩浰汥扩橥捴楯be湴牥汥lc污獳敳etl敳牥污瑩潮r
+Possibilitédefairedesrequêtesetassociations
lh
p
o
l
ymorp
h
es
−Nombreusesjointuresàfaireencasdehiérarchiecomplexe
Possibilitédelimitercertains
p
roblèmesenajoutantdes
attributsdanslesclassesmères:
E
ttibt
t
d
l
lti
E
x.una
tt
r
ib
u
t
t
ype
d
ans
l
are
l
a
ti
on
MembreUniversitépouréviterunejointurelorsdela
re
q
uête«
q
uelsson
t
lesnomse
t
p
rénomsdesmaîtresde
q
q
p
conférences?»

Problèmede
p
erformances
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
38
p
+Vérificationdescontraintesd’intégrité
3. Traduction de l’héritage (5/5
)
)
3.Représentationdechaqueclasseconcrèteparunerelation:
Correspondancedechaqueclasseconcrèteavecune
relationcontenanttouslesattributs(mêmelesattributs
hérités)
de
la
classe
hérités)
de
la
classe
Encasdeclasseconcrèteavecdesclassesfilles:Clé
p
rimairedesrelationscorres
p
ondantesauxclassesfilles=
p
p
clésétrangèresfaisantréférenceàlacléprimairedela
relationcorrespondantàlaclassemère
+Pasdejointurepourretrouverlesinformations

偲潢注浥
p
潵o汥la獳潣楡瑩潮s整牥
q
痪瑥u
p

y
浯m
p
桥h
p
q
灹p
−Redondanced’information
P
d
éité
d’ffi
tt
lti
d
l
EJB
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
39

P
as
d
en
é
cess
ité
d’
o
ff
r
i
rce
tt
eso
l
u
ti
on
d
ans
l
esspec.
EJB
3.0
4. Navigation dans le graphe d’objets
Quefairelorsqu’unobjetestcrééàpartirdedonnées
ééé
d
l
b
d

?
r
é
cup
é
r
é
es
d
ans
l
a
b
ase
d
e
d
onn
é
es
?
Récupérationimmédiateetcréationdesobjets
associés
−Risquederécupérerdesobjetsinutileset
mauvaises
p
erformancessansraisonvalable
Créationdesobjetsassociésuniquementencas
d’accès
p
arl’application(lazyloadingou
récupérationparesseuseouàlademande)

偲潢注浥d敳«
N
⬱卥汥捴S»
Choisirletypederécupérationenfonctiondela
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
40
requête
5. Objet dépendant (1/2)
Objetdontlecycledeviedépendd’unautreobjet
(bjt
iéti)
(
o
bj
e
t
p
ropr
iét
a
i
re
)
Bâtit
SeSitueDans
*
1
Salle
capacité:integer
Bâti
men
t
nom:char
nbEtages:integer
numéroDeSalle
Clé
p
rimairedel
a
relationcorres
p
ondantàlaclasse
p
p
desobjetsdépendantsconstituéedelacléprimairede
delarelationcorrespondantàlaclassedesobjets
p
ropriétaires
Persistanced’unobjetdépendantgéréeparl’objet
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
41
p
ropriétaire(ou
p
arleDAOdel’objet
p
ropriétaire)
5. Objet dépendant (2/2)
SSiD
Salle
Bâtiment
S
e
Si
tue
D
ans
*
1
Salle
capacité:integer
nom:char
nbEtages:integer
numéroDeSalle
Batiment(IDBatiment
, nom, nbEtages)
Salle(#IDBatiment, numeroSalle
, capacité)
Cote
0..1
*
Société
Bourse
codeEmetteur
Bourse (IDBourse
, …)
Societe(IDSociete
, …)
©Maude Manouvrier -Univ. Paris Dauphine
42
Cotation(#
I
DBourse
,

c
odeEmetteur
,

#
I
DSociete)
Non correspondance :
30%ducoûtdedéveloppementconsacréàlamiseen
correspondance
Modélisationrelationnelletributairedelathéorie
relationnelle
relationnelle
Modélisationorientée-objetsansdéfinition
héi
i
i
i
héi
mat

mat
i
quer
i
goureusen
i
p
art
i
et

or
i
que
Modèlesarchitecturauxou
b
aséssurlesmotifsvus
commeunesolutionpartielleauproblèmedenon-
correspondance:ex.Entitybeans,DAO(DataAccess
Object)

Réduction
du
code
de
correspondance
par
les
outils
©Maude Manouvrier -Univ. Paris Dauphine –repris et adapté de [Gri09] et [BK05]
43
Réduction
du
code
de
correspondance
par
les
outils
ORM