Vous êtes sur la page 1sur 6

DSI 2 : TP2 Atelier Environnement de Développement

Atelier 2 :
La persistance des données avec JPA
Objectif
Le but de ce TP est de se familiariser avec l’environnement de développement Java EE, de réaliser
le mapping objet-relationnel avec JPA en développant les entités Java .
Outils :
✓ JDK 11
✓ RED HAT CodeReady Studio 12.12
✓ WildFly 17
✓ MySQL 5.6 & MySQL Administrator

PARTIE 1 : Introduction au Mapping Objet-Relationnel avec JPA


1- Concepts de base :
Comment stocker les objets modélisés en Java vers les SGBDR ?
➔Utiliser un ORM (Object Relationnal Mapping ) permettant de Transformer et adapter la structure
des données relationnelles aux données du modèle objet .

Modèle Objet Modèle Relationnel


-Classe -Table
-ID -PK
-Attributs -Colonnes
-Héritage -FK
-Relation -Enregistrement
-Objet ….
….
Pour normaliser le fonctionnement des ORM , on utilise l’api JPA.
La Java Persistance API (abrégée en JPA), est une interface de programmation Java permettant la
gestion de la correspondance entre des objets Java et les tables d’une base de données => la gestion
de la persistance.
L'utilisation de JPA nécessite un fournisseur de persistance (ORM) comme Hibernate (c’est un
Framework open source gérant la persistance des objets en base de données relationnelle).

1 Chaabani Marwa 2020-2021


DSI 2 : TP2 Atelier Environnement de Développement

2- Les entités JPA :


Une entité est une classe Java mise en correspondance avec une table et dont les instances peuvent
être persistantes. Elle doit être annotée par @Entity du package javax.persistance.entity, et doit
implémenter l’interface java.io.Serializable
Une entité doit avoir :
• Un constructeur public/ protégé sans argument avec la possibilité d’avoir d'autres constructeurs.
• Des attributs privés et ayant des getters et setters
• Au moins une propriété déclarée comme identité de l’entité avec l'annotation @Id.
Exemple :

@Table (name="nomTable") : est une annotation Facultative sur la classe. Elle permet de mapper les
objets de la classe avec la table dont le nom est différent. Si omise, la table prend le nom de la classe.
@GeneratedValue : est une annotation Facultative, sur l'attribut ou sur le getter annoté avec @Id.
Définit la manière dont la base gère la génération de la clé primaire. L’attribut "strategy" obligatoire
pouvant avoir comme valeur : AUTO / IDENTITY (Dans le cas de MySQL, c'est l'option AUTO-
INCREMENT) / SEQUENCE .
@Column : est une annotation utile pour indiquer le nom de la colonne dans la table, quand cette
dernière est différente du nom de la propriété en java.
3- Persistence.xml :
Le fichier persistence.xml est nécessaire au bon fonctionnement de JPA et doit être stocké dans le
répertoire META-INF. Il contient les informations de connexion à la BD à utiliser, la liste des classes
mappées avec la base de données …

2 Chaabani Marwa 2020-2021


DSI 2 : TP2 Atelier Environnement de Développement

Le JNDI name (java:/SchoolDS) correspond au nom de la datasource sauvegardée dans le serveur


WildFly .
La propriété hibernate.hbm2ddl.auto avec la valeur ‘create’ permet de créer automatiquement les tables
dans la base de données isetdb à partir des classes (ou entités) mappées. On va changer cette valeur après
a ‘update’ pour ne pas écraser les données créées.
PARTIE 2 : Base de données & Data Source
Pour créer une Data Source , suivez ces étapes :
1) D’abord créez une base de données avec MySQL Administrator =>Connectez vous sur MySQL
(root / root) =>Cliquez sur Catalogs => Click droit en bas puis Create New Schema

2) Nommez la base de données : isetdb puis OK.

3 Chaabani Marwa 2020-2021


DSI 2 : TP2 Atelier Environnement de Développement

3) Démarrez le serveur wildFly et Sur votre navigateur tapez l’URL suivante : http://localhost:8484/
4) Cliquez sur Administration Console pour afficher la page http://localhost:9990/console/index.html
5) Tapez admin/adminpwd dans la boite de dialogue de connexion.
6) Aoutez une nouvelle DataSource nommée SchoolDS comme suit :

7) Sélectionnez MySQL Puis Next entrez le nom de la datasource ainsi que le jndi Name Puis Next:

PARTIE 3 : JPA En Pratique :


Pour pouvoir créer ultérieurement une entité JPA , nous allons procéder comme suit :

4 Chaabani Marwa 2020-2021


DSI 2 : TP2 Atelier Environnement de Développement

1-Créer un projet de type « EJB Project » nommé « edu.iset.jpa » et vérifier la sélection du serveur
wildFly dans Target runtime pus Finish .

2-Aller dans Properties (Click droit sur le nom du projet) => Project Facets et sélectionner JPA.
Puis Apply and close .

3- Aller dans le fichier persistence.xml sous ejbModule/META-INF ou directement sous JPA


Content et ajouter le code suivant dans la balise <persistence-unit>
<jta-data-source>java:/SchoolDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create" />
</properties>
4- Créer une nouvelle classe ‘Etudiant’ sous ejbModule dans le package edu.iset.jpa.entities

5 Chaabani Marwa 2020-2021


DSI 2 : TP2 Atelier Environnement de Développement

5- Mettre a jour le code de la classe comme suit et ajouter les getters et setters nécessaires :

6- Actualiser la liste des classes persistées => click


droit sur le fichier de configuration persistence.xml
puis Synchronize Class List .
=> On remarquera l’ajout de cette ligne au fichier
persistence.xml :
<class>edu.iset.jpa.entities.Etudiant</class>

7- Maintenant Sauvegarder tout et déployer ce projet dans le serveur WildFly comme suit : Click
droit sur le serveur => Add and Remove => edu.iset.jpa => Add => Finish

8- Une fois le projet est bien déployé sans exceptions dans la console :

9- Vérifier l’ajout de la table etudiant dans la base de données avec tous les champs correspondants.

6 Chaabani Marwa 2020-2021

Vous aimerez peut-être aussi