SIR11_EJB30

download SIR11_EJB30

of 67

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