TP3 Jpa 2018
TP3 Jpa 2018
TP3 Jpa 2018
En revanche, grâce à l’abstraction apportée par JPA, nous n’aurons nul besoin
d’utiliser directement JDBC dans le code Java.
Dans cet atelier nous allons présenter les grands principes de l’API JPA, les étapes
de mise en œuvre d’un projet JPA et illustrer cette présentation par un exemple
d'implémentation.
La persistance est ainsi le fait d'exister dans le temps. Un objet qui reste en l'état
quand il est sauvegardé puis chargé par une autre application, ou à un moment
éloigné, possède la propriété de persistance. En conséquence, l'objet n'est plus
dépendant de l'application qui l'a créé.
Présentation du JPA
JPA est un standard pour la persistance des objets Java. L'API JPA n'a été
disponible qu'à partir du JDK 1.5. Cette API a emprunté un grand nombre de
concepts et de normes à d’autres Framework leaders dans la persistance comme
Toplink (Oracle) et Hibernate (de JBoss). Un des grands avantages de JPA est que
c'est une API indépendante et peut très bien s'intégrer avec J2EE, ainsi que les
applications J2SE. La couche JPA a sa place dans une architecture multicouche.
L'API de persistance est accessible en utilisant le paquetage Java javax.persistence.
1
Nadhem Bel Hadj Java EE
2
Nadhem Bel Hadj Java EE
3
Nadhem Bel Hadj Java EE
4
Nadhem Bel Hadj Java EE
5
Nadhem Bel Hadj Java EE
6
Nadhem Bel Hadj Java EE
12. Créer un nouveau package com.iset.entities, puis créer une classe Client dans ce
package :
package com.iset.entities;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Client implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue (strategy=GenerationType.IDENTITY)
//pour autoincrement
private int code;
private String nom;
private String ville;
public int getCode() {
return code;
}
public void setCode(int code) {
7
Nadhem Bel Hadj Java EE
this.code = code;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getVille() {
return ville;
}
public void setVille(String ville) {
this.ville = ville;
}
}
13. Pour que l’entité Client soit persister dans la BD, cliquez avec le bouton droit sur le
fichier Persistence.xml puis cliquez sur « Synchronise Class list », remarquez
qu’une ligne sera ajoutée au fichier « Persistence.xml » :
<class>com.iset.entities.Client</class>
Maintenant on va tester notre travail en générant la table « CLIENT » à partir de l’entité
Client (on peut faire l’opération inverse). Cliquez avec le bouton droit sur le
projet/JPA/ Create tables from entities :
8
Nadhem Bel Hadj Java EE
9
Nadhem Bel Hadj Java EE
15. Créez le package com.iset.util, puis créez dans ce package la classe JpaUtil :
package com.iset.util;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
if (entityManager==null)
{
factory =
Persistence.createEntityManagerFactory(persistUnit);
entityManager = factory.createEntityManager();
}
return entityManager;
}
}
Cette classe permet de faciliter le travail, à chaque fois ou on a besoin d’un entityManager
on appelle la méthode getEntityManager en lui passant le « persistence unit » déclarée
dans le fichier persistence.xml :
<persistence-unit name="MonProjetJPA">
16. Créez le package com.iset.dao contenant la classe ClientDao , cette classe contient
les opérations CRUD (Create, Retrieve, Update, Delete) sur l’entité Client :
package com.iset.dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import com.iset.entities.Client;
import com.iset.util.JPAutil;
//classe contenant les méthodes génériques ajouter, supprimer,
consulter par clé primaire (Id)
public class ClientDao {
private EntityManager
entityManager=JPAutil.getEntityManager("MonProjetJPA");
10
Nadhem Bel Hadj Java EE
EntityTransaction tx = entityManager.getTransaction();
tx.begin();
entityManager.persist(c);
tx.commit();
return clients; }}
11
Nadhem Bel Hadj Java EE
package com.iset.test;
import com.iset.dao.ClientDao;
import com.iset.entities.Client;
Avant de tester les autres méthodes de la classe ClientDao, Changez dans le fichier
Persistence.xml la valeur de la propriété "toplink.ddl-generation" de la valeur "drop-and-
create-tables" en "none". Et ce pour ne par supprimer les tables et les recréer.
12