JPA
EclipseLink
EclipseLink
1Présentation
1
Présentation
JPA 10aété introduite dans la spécification JEE 5la spécification JEE 6finit JPA
JPA
1
.
0
a
été
introduite
dans
la
spécification
JEE
5
,
la
spécification
JEE
6
définit
JPA
2.0
JPAestuneabstractiondelacoucheJDBC,lesclassesetlesannotationsJPAsont
danslepackage
j
avax.persistance.Lesannotationsdemapping peuventêtre
regroupéesendeuxcatégories:
Logique:descriptiondumodèled'entités.
Physique:descriptiondestablesetdesrelationsdelabasededonnées
Composants:
Composants:
ORM:mécanismedemapping relationnelobjet
L’APIEntity ManagerquigèrelesopérationsCRUD
JPQL:langagederequêteorientéobjet.
JTA (J TiAPI )Mé i d i d ill d i d
JTA
(J
ava
T
ransact
i
on
API
)
:
can
i
sme
d
egest
i
on
d
esverrou
ill
ageset
d
estransact
i
ons
d
ans
unenvironnementconcurrent
CallBack etlisteners
Frameworks depersistanceJPA
TopLink.
EclipseLink (framework deréférenceJPA,basésurTopLink).
Hibernate.
EclipseLink
EclipseLink
Mapping objetrelationnelavecune
im
lémentationdeJPAbaséesurTo
p
Link.
p
Mapping objetxml avecuneimplémentation
de JAXB basée sur MOXY (hors JPA)
de
JAXB
basée
sur
MOXY
(hors
JPA)
.
Générationdeserviced’objets(ServiceData
Object)àpartird’unfichierXSD(horsJPA).
Accès àdes bases de données non
Accès
à
des
bases
de
données
non
relationnellesviaunadaptateur(horsJPA).
2
Exemple
2
Exemple
Etape1Mise enplacedel'unitédepersistancedanslefichierMETAINF/persistence.xml
<?xml version="1.0"encoding="UTF8"?>
<
pe
r
s
i
ste
n
ce
v
e
r
s
i
o
n="2
.0
"xmln
s
="h
ttp://ja
v
a.su
n
.co
m
/
xml
/
n
s/pe
r
s
i
ste
n
ce
"
<?xml version="1.0"encoding="UTF8"?>
<
pe
r
s
i
ste
n
ce
v
e
r
s
i
o
n="2
.0
"xmln
s
="h
ttp://ja
v
a.su
n
.co
m
/
xml
/
n
s/pe
r
s
i
ste
n
ce
"
<
pesstece
eso
.0
s
ttp://ja a.su .co / / s/pe s ste ce
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistenceunit name="jpa1"transactiontype="RESOURCE_LOCAL">
<
provider
>
org eclipse persistence jpa PersistenceProvider
</
provider
>
<
pesstece
eso
.0
s
ttp://ja a.su .co / / s/pe s ste ce
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistenceunit name="jpa1"transactiontype="RESOURCE_LOCAL">
<
provider
>
org eclipse persistence jpa PersistenceProvider
</
provider
>
<
provider
>
org
.
eclipse
.
persistence
.
jpa
.
PersistenceProvider
</
provider
>
<class>jpa.Client</class>
<properties>
<property name="javax.persistence.jdbc.url"value="jdbc:derby://localhost:1527/bdJpa"/>
<property name="javax.persistence.jdbc.password"value="jpa"/>
<
provider
>
org
.
eclipse
.
persistence
.
jpa
.
PersistenceProvider
</
provider
>
<class>jpa.Client</class>
<properties>
<property name="javax.persistence.jdbc.url"value="jdbc:derby://localhost:1527/bdJpa"/>
<property name="javax.persistence.jdbc.password"value="jpa"/>
<property name="javax.persistence.jdbc.driver"
value="org.apache.derby.jdbc.ClientDriver"/>
<property name="javax.persistence.jdbc.user"value="jpa"/>
<property name="eclipselink.ddlgeneration"value="createtables"/>
<
/
p
ro
p
erties>
<property name="javax.persistence.jdbc.driver"
value="org.apache.derby.jdbc.ClientDriver"/>
<property name="javax.persistence.jdbc.user"value="jpa"/>
<property name="eclipselink.ddlgeneration"value="createtables"/>
<
/
p
ro
p
erties>
Etape2créationdel'entitédepersistance
/
pp
</persistenceunit>
</persistence>
/
pp
</persistenceunit>
</persistence>
package
j
pa;
importjavax.persistence.*;
@Entity
publicclassClientimplements Serializable {
@Id
private StringdateNaissance;
private StringdateCreation;
private int age;
private Stringemail;
private
Adresse
adresse
;
package
j
pa;
importjavax.persistence.*;
@Entity
publicclassClientimplements Serializable {
@Id
private StringdateNaissance;
private StringdateCreation;
private int age;
private Stringemail;
private
Adresse
adresse
;
@Id
private Longid;
private Stringprenom;
private Stringnom;
private
Adresse
adresse
;
//Gméthodes get etset}
@Id
private Longid;
private Stringprenom;
private Stringnom;
private
Adresse
adresse
;
//Gméthodes get etset}
Etape3Utilisationdel'EntityManager
EntityManagerFactory
emf
=
Persistence createEntityManagerFactory
(
"
jpa1
"
);
for(Clientcli :liste){
System out println(
cli getNom
());
EntityManagerFactory
emf
=
Persistence createEntityManagerFactory
(
"
jpa1
"
);
for(Clientcli :liste){
System out println(
cli getNom
());
emf
=
Persistence
.
createEntityManagerFactory
(jpa1);
EntityManager em=emf.createEntityManager();
Clientcl=newClient();
cl.setAge(3);
cl.setEmail("[email protected]");
System
.
out
.
println(
cli
.
getNom
());
}
tx.commit();
em.close();
emf.close();
emf
=
Persistence
.
createEntityManagerFactory
(jpa1);
EntityManager em=emf.createEntityManager();
Clientcl=newClient();
cl.setAge(3);
cl.setEmail("[email protected]");
System
.
out
.
println(
cli
.
getNom
());
}
tx.commit();
em.close();
emf.close();
cl.setNom("unclient");
cl.setDateNaissace("01/01/1967");
cl.setPrenom("ali");
EntityTransaction tx=em.getTransaction();
tx.be
g
in
();
//UtiliserunerequêteJPQLcl.setNom("unclient");
cl.setDateNaissace("01/01/1967");
cl.setPrenom("ali");
EntityTransaction tx=em.getTransaction();
tx.be
g
in
();
//UtiliserunerequêteJPQL
g
();
em.persist(cl);
Stringjql ="Selectcfrom Clientc";
Query requete =em.createQuery(jql);
List<Client>liste=requete.getResultList();
g
();
em.persist(cl);
Stringjql ="Selectcfrom Clientc";
Query requete =em.createQuery(jql);
List<Client>liste=requete.getResultList();
L'utilisationdumécanismedestransactionsestobli
g
atoire
,
danslecas
g,
desopérations(persist,merge etremove),seulelaméthodefind()
nenécessitepasdetransactionpourl'accèsauxdonnées.
Dans lecadred'unea
pp
licationJavaSEl'utilisationdesméthodes
pp
Beginetcommitestobligatoire,danslecadred'uneapplication
JavaEEl'APIJTAsechargedumécanismedestransactions.
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !