SIR11_EJB30
-
Upload
pablo-sene -
Category
Documents
-
view
223 -
download
0
Transcript of SIR11_EJB30
-
8/10/2019 SIR11_EJB30
1/67
1
Java Enterprise Edition
EJB3 / Deuxime partie
Matthieu EXBRAYAT
Master 2 RIA
Universit Louis Pasteur
-
8/10/2019 SIR11_EJB30
2/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 2
#&an
EJB Entit' / suite
Messa(e Driven Bean
)'*&e de vie et *a&&+a*,sTransa*tions et s-*urit-
nter*epteurs
Timers
-
8/10/2019 SIR11_EJB30
3/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 3
EJB Entit' . &a suite
)&-s simp&es et *&-s *omposites
-rita(e
Re&ations entre entit-s
EJB 0"
)omp&-ments sur &e mappin(
Ta+&es existantes / ta+&es *r--es
-
8/10/2019 SIR11_EJB30
4/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 4
)&asse de *&-s
#as n-*essaire en (-n-ra& pour &es t'pes simp&es #eut harmoniser1 mais a&&ourdit
Mappin( automatiue des t'pes simp&es
!ti&e pour &es *&-s *omposites
Mise en p&a*e
)r-ation dune *&asse simp&e1 mais s-ria&i4a+&e1 ave*
*onstru*teur sans paramtres et ave* ha*ha(e et -(a&it-s
+ien d-5inis
6d)&ass
-
8/10/2019 SIR11_EJB30
5/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 5
Exemp&e . &a *&asse *&-
pu+&i* *&ass Emp&o'e#7 imp&ements 8ava9io9:eria&i4a+&e ;
private :trin( nom;
this9nom@nom ;999?
pu+&i* int hash)ode=>;999?
-
8/10/2019 SIR11_EJB30
6/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 6
Exemp&e . &a *&asse entit'
6Entit'
6d)&ass=Emp&o'e#79*&ass>
pu+&i* *&ass Emp&o'e imp&ements 8ava9io9:eria&i4a+&e;
private :trin( nom;999?
pu+&i* :trin( setom=:trin( nom>;999?
999
-
8/10/2019 SIR11_EJB30
7/67
-
8/10/2019 SIR11_EJB30
8/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 8
)Ct- *&asse
6Entit'
pu+&i* *&ass Emp&o'e imp&ements 8ava9io9:eria&i4a+&e;
private Emp&o'e#7 p,
6Entit'
6Ta+&e=name@ F #ER:E G>
6nheritan*e=strate('@nheritan*eT'pe9:H"EITAB"E>
6Dis*riminator)o&umn=name@ F D:)R G1
dis*riminatorT'pe@Dis*riminatorT'pe9:TRH>
6Dis*riminatora&ue=F #ER:E G>
pu+&i* *&ass #ersonne ;
private :trin( insee
pu+&i* *&ass Mede*in extends #ersonne;
999
?
-
8/10/2019 SIR11_EJB30
15/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 15
)omparaison des 3 appro*hes
Ta+&e uniue . simp&e1 e55i*a*e =*har(ement>
N . norma&isation1 attri+uts des sous *&asses doivent Otre nullables
Une table par classe + : contraintes possibles, adquation base pr-existante
- : normalisation, colonnes redondantes, relations
polymorphiques ?
Eclatement entre tables + jointures
+ : contraintes possibles, normalis, adquation base pr-existante
- : cot reconstruction
-
8/10/2019 SIR11_EJB30
16/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 16
:uper*&asse non persist-e
6Mapped:uper*&asspu+&i* *&ass #ersonne ;
private :trin( id;999?
999
?
6Entit'
6nheritan*e=strate('@nheritan*eT'pe9JED G>
pu+&i* *&ass #atient extends #ersonne ;
999
?
6Entit'
6#rimar'7e'Join)o&umn=name@F MEDI#7 G>
pu+&i* *&ass Mede*in extends #ersonne;
999
?
-
8/10/2019 SIR11_EJB30
17/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 17
Re&ations entre entit-s
& existe un mappin( pour *haue t'pe de re&ation existantentre deux *&asses
neNtoNone mono dire*tionne&&e
neNtoNone +idire*tionne&&e
neNtoNman' monodire*tionne&&e
Man'NtoNone monodire*tionne&&e
neNtoNman' +idire*tionne&&eMan'NtoNman' monodire*tionne&&e
Man'NtoNman' +idire*tionne&&e
-
8/10/2019 SIR11_EJB30
18/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 18
Exemp&e
Emp&o'-
Ma*hine :ervi*e Adresse
#a's
#ro8et
T-&-phone
PP
P
P
P
P
P
-
8/10/2019 SIR11_EJB30
19/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 19
neNtoNone MD
6Entit'
pu+&i* *&ass Emp&o'e imp&ements 8ava9io9:eria&i4a+&e ;
999
private Adresse adrEmp ;
return this9adrEmp ;
this9adrEmp@adrEmp;
return emp
6Entit'
pu+&i* *&ass Emp&o'e 999 ;
999
private )o&&e*tion#ro8etS pro8@
neQ Arra'"ist#ro8etS=> ;
999
?
999
-
8/10/2019 SIR11_EJB30
28/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 28
Man'NtoNMan' Monodire*tionne&6Entit'
pu+&i* *&ass #ro8et 999 ;
999
private )o&&e*tionEmp&o'eS histoEmps@
neQ Arra'"istEmp&o'eS=>?>
pu+&i* )o&&e*tionEmp&o'eS (etistoEmps=> ;
999
?
pu+&i* void setistoEmps=)o&&e*tionEmp&o'eS histoEmps> ;
999
?
)Ct- Emp&o'- U
-
8/10/2019 SIR11_EJB30
29/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 29
A*tions en *as*ade
#arti*u&irement 8usti5i-e en 2 MD
Disponi+&e pour toutes re&ations
6Typeelation=)as*adeT'pe9!!!>
A""1 #ER::T1 MERHE1 REME1
REVRE:
-
8/10/2019 SIR11_EJB30
30/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 30
RDER BY
T'pe "ist permet tri
6rderB'=FattributA:) W DE:) G>
Tri possi+&e sur p&usieurs attri+uts
-
8/10/2019 SIR11_EJB30
31/67
-
8/10/2019 SIR11_EJB30
32/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 32
EJB 0"
"o*a&iser des donn-es persistentes Uia &EM
Ave* ue& &an(a(e U
EJB 0"
:0"N&i,e
orient- o+8et =&e re*ours aux 8ointures est
&imit->
-
8/10/2019 SIR11_EJB30
33/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 33
A# 0uer'
package javax.persistence;
public interface Query {
public List getResultList( );
public Object getSingleResult( );
public int executeUpate( );
public Query set!axResults(int "axResult);
public Query set#irstResult(int start$%siti%n);
public Query set&int(String 'inta"e Object value);
public Query set$ara"eter(String na"e Object value);
public Query set$ara"eter(String na"e *ate value +e"p%ral+ype te"p%ral+ype);
public Query set$ara"eter(String na"e ,alenar value +e"p%ral+ype te"p%ral+ype);
public Query set$ara"eter(int p%siti%n Object value);
public Query set$ara"eter(int p%siti%n *ate value +e"p%ral+ype te"p%ral+ype);
public Query set$ara"eter(int p%siti%n ,alenar value +e"p%ral+ype te"p%ral+ype); public Query set#lus'!%e(#lus'!%e+ype flus'!%e);
-
-
8/10/2019 SIR11_EJB30
34/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 34
Entit' Mana(e A# =reuOtes>
0uer' *reate0uer'=:trin( &:trin(>
0uer' *reateamed0uer'=:trin( name>
0uer' *reateative0uer'=:trin( s&:trin(>0uer' *reateative0uer'=:trin( s&:trin(1 )&ass resu&t)&ass>
0uer' *reateative0uer'=:trin( s&:trin(1 :trin( resu&t:etMappin(>
-
8/10/2019 SIR11_EJB30
35/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 35
ReuOte . premiers pas
Retour @ entit' 0uer' @em9*reate0uer'=F5rom Emp&o'e e Qhere e9id@23>9(et:in(&eResu&t=>
-
8/10/2019 SIR11_EJB30
36/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 36
ReuOte param-tr-e
#aramtre nomm-
0uer' @em9*reate0uer'=F 5rom Emp&o'e e
Qhere [email protected]>
-
8/10/2019 SIR11_EJB30
39/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 39
R-*up-ration dattri+uts
Attri+ut dentit-:e&e*t *9prenom Vrom Emp&o'e e
Attri+ut de F re&ation G =*ardina&it- >:e&e*t *9servi*e9nomservi*e Vrom Emp&o'e e
:e&e*t *9servi*e9+atiment9adresse Vrom 999
T'pe des retours U
-
8/10/2019 SIR11_EJB30
40/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 40
Retour do+8ets *onstruits
)onstru*tion dun o+8et dans :E"E)T
Exemp&e . *&asse om#ers =nom1prenom>
Extraite de Emp&o'e
:e&e*t neQ om#ers=e9nom1e9prenom> Vrom
Emp&o'e e
nt-rOt U
-
8/10/2019 SIR11_EJB30
41/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 41
:-&e*tion et *ardina&it- mu&ti
"a r-*up-ration dire*te par *hemin nestpossi+&e uave* une *ardina&it-
En *ardina&it- n . ou KERL J:e&e*t p Vrom Emp&o'e e1 =e9pro8et> p
:e&e*t p Vrom Emp&o'e e J e9pro8et p
:e&e*t p9intitu&e Vrom Emp&o'e e J e9pro8et p
"EVT J1 VET) J1 D:T)T999
-
8/10/2019 SIR11_EJB30
42/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 42
ERE
)&ause ERE simi&aire :0"
"7E1 BETEE1 @1 AD1 R 999
KTL =&iste va&eurs> . sens *&assiue
: KTL !"" . attri+uts et paramtres
*9adresse : T !""
.a(e : T !""
: KTL EM#TY . &iste
KTL MEMBER V . dans un &iste =re&ation>
-
8/10/2019 SIR11_EJB30
43/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 43
Expressions Von*tionne&&es
"ER=:ttrin(>!##ER=:trin(>
TRM=KK"EADH W TRA"H W BT L K TrimI*harL VRML :trin(>
))AT=:trin(1:trin(2>
"EHT=:trin(>
")ATE=:trin(1:trin(2 K1startL>
:!B:TRH=:trin(1start1&en(th>
AB:=num+er>
:0RT=dou+&e>
MD=int1int>
)!RRETIDATE
)!RRETITME
)!RRETITME:TAM#
-
8/10/2019 SIR11_EJB30
44/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 44
A(r-(ation
)!T
MAX1 M
AH1:!M
HR!# BY1 AH
:E"E)T e9nom1 )!T=p>
VRM Emp&o'e e J #ro8et
-
8/10/2019 SIR11_EJB30
45/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 45
Et en*ore999
A""1 AY1 :ME
EX:T:
!#DATE et DE"ETE!#DATE Emp&o'e e :ET e9sa&aire@e9sa&aire$
ERE EX:T: =:E"E)T e Vrom Emp&o'e ERE 999>
0uand avoir re*ours !#DATE et DE"ETE U
Dan(ers U
-
8/10/2019 SIR11_EJB30
46/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 46
ReuOtes natives
#our des appe&s dire*ts en :0" =*as parti*u&iers>
*reateative0uer'=:trin( s&> . retours Fsimp&esG
*reateative0uer'=:trin( s&1 )&ass *&asse> . retour*&asse dentit- =*omp&te >
0uer' @em9*reateative0uer'=F :E"E)T nom1
prenom1a(e Vrom Emp&o'e G1 Emp&o'e9*&ass>
#ossi+i&it- de reuOtes natives *omp&exes 999
-
8/10/2019 SIR11_EJB30
47/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 47
ReuOtes omm-es
ReuOtes *r--es F part G
6amed0ueries
6amed0uer'=name@ F G1 uer'@ F G>
Avant &e d-+ut de &a *&asse
Autre possi+i&it- . des*ripteur ded-p&oiement
nt-rOt U
-
8/10/2019 SIR11_EJB30
48/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 48
Exemp&e
6amed0ueries=;
6amed0uer'=name@ F sa&aireMo'en G1
uer'@ F :E"E)T AH=e9sa&aire> Vrom Emp&o'e e
ERE e9a(e BETEE .a(e AD .a(e2 G>
?>
6Entit'
pu+&i* *&ass Emp&o'e ;9999?
0uer' @em9*reateamed0uer'=F sa&airemo'en G>
ta+&e =mappin( mu&ti ta+&es>
&en(th =*haine>
pre*ision1 s*a&e =num-riues>
-
8/10/2019 SIR11_EJB30
51/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 51
H-n-ration de *&-
6Ta+&eHenerator6Ta+&eHenerator =name@ F nom(en G1
ta+&e@ F nomta+&e G1
p,)o&umname@ F nom)o& G1
va&ue)o&umname@ F nom)o&2 G1p,)o&umna&ue@ F ma)&e G>
6d 6Henerateda&ue =strate('@HenerationT'pe9TAB"E1
(enerator@ F nom(en G>
!ne mOme ta+&e peut servir pour p&usieurs *&-s SS
p,)o&umna&ue
-
8/10/2019 SIR11_EJB30
52/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 52
H-n-ration de *&- =suite>
6:euen*eHenerator
6:euen*eHenerator=name@ FnomHenG1
seuen*eame@ F ta+&e:e G>
6d
6Henerateda&ue=strate('@HenerationT'pe9:E0!E)E1
(enerator@ F nomHen G>
En (-n-ra&1 s-uen*e par *&-
-
8/10/2019 SIR11_EJB30
53/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 53
En*ore ue&ues ta(s999
6Transient
Attri+ut non persist- =int-rOt U>
6Tempora&=t'pe>
t'pe@Tempora&T'pe9DATE / TME / TME:TAM#
6"o+ 6Basi*=5et*h@Vet*hT'pe9"A\Y
-
8/10/2019 SIR11_EJB30
54/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 54
Mappin( mu&tita+&e
!n entit- sur p&usieurs ta+&es U:*h-ma pr- existant ou aspe*t pratiue
Diver(en*es entre mod&e o+8et et re&ationne&
=(ranu&arit-999>
6:e*ondar'Ta+&e
6:e*ondar'Ta+&es
-
8/10/2019 SIR11_EJB30
55/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 55
Exemp&e
6Entit'
6Ta+&e=name@ F EM#"YE G>
6:e*ondar'Ta+&es=; // seu&ement si p&usieurs
6:e*ondar'Ta+&e=name@ FADRE::EG1
p,Join)o&umns@;6#rimar'7e'Join)o&umn=name@ FADRE::EIDG>?>1
6:e*ondar'Ta+&e=name@ FTE"E#EG1
p,Join)o&umns@;6#rimar'7e'Join)o&umn=name@ F#EIDG>?>
?>
999
6)o&umn=name@ F )DE G1 ta+&e@ F ADRE::E G>
pu+&i* :trin( (et)ode=> ;999
-
8/10/2019 SIR11_EJB30
56/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 56
+8ets en*apsu&-s
D-mar*he F inverse G
:tru*turation hi-rar*hiue de &entit'
Mappin( p&at dans une seu&e ta+&e
6Em+edda+&e / 6Em+edded
*5 *&-s en*apsu&-es =trs simi&aire999>
-
8/10/2019 SIR11_EJB30
57/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 57
Messa(e Driven Bean
:ession et entit' su55isent pour (-rer &eso+8ets invo*ation *&assiue
)as des *ommuni*ations as'n*hrones
e9(9 . &o(1 traitement +at*h1 app&i ext-rieure1 et*9
invo*ation *&assiue inadapt-e
!ti&isation de +o]tes aux &ettres
-
8/10/2019 SIR11_EJB30
58/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 58
Messa(e Driven Bean
Dans &e monde EJB .
:eu&s &es MDB re^oivent des messa(es
&s ne servent u ^a1 et don*
&s peuvent imp&ementer &es modes #2# et
pu+/su+
Mais pas &e mode reuest/rep&'
-
8/10/2019 SIR11_EJB30
59/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 59
0ue *ontient un MDB U
Des ta(s9990ue&&e t'pe de ressour*e -*outeNtNi& U
!ne m-thode F inter5a*e G
nMessa(e
Dautres m-thodes U
& na pas dinter5a*e &o*a& ou remote999
-
8/10/2019 SIR11_EJB30
60/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 60
Exemp&e . &o( dadministration
+8e*ti5. m-moriser toutes &es t_*hesdadministration
M-thode . envoi dun messa(e *ontenant &e
nom de &uti&isateur1 &a date1 &e t'pe da*tion9
"e MDB se *ontente de sto*,er dans une
ta+&e de &o(
-
8/10/2019 SIR11_EJB30
61/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 61
ue s*h-matiue
EJB :ession
-metteur
MDB Entit'
-
8/10/2019 SIR11_EJB30
62/67
-
8/10/2019 SIR11_EJB30
63/67
E i d
-
8/10/2019 SIR11_EJB30
64/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 64
Envoi de messa(e999
#our &envoi1 on reste sur &es +onnes
viei&&es m-thodes999
En uti&isant tout de mOme &es in8e*tions
pour &a 5a*tor' et &a 5i&e dattente =ou &iste
di55usion>
E &
-
8/10/2019 SIR11_EJB30
65/67
EJB et Java EE Matthieu EXBRAYAT Master 2 RA / !"# 2$$% 65
Exemp&e
9999
6Resour*e=mappedame@ F )onne*tionVa*tor' G>
private )onne*tionVa*tor' *5