Cursus
Formation JAVA/JAKARTA EE Gérer la persistance des données avec JPA/Hibernate
Objectifs
Comprendre les concepts d'ORM, JPA, Hibernate et les alternatives à JDBC.
Démarrer avec Hibernate et les mappings XML et JPA.
Configurer JPA et les logs pour une meilleure intégration et surveillance.
Maîtriser les techniques de mapping JPA pour modéliser les relations entre les entités.
Utiliser les requêtes JPQL et l'API de Criteria pour interagir avec la base de données.
Manipuler les objets persistants et gérer les transactions avec l'API JPA.
Optimiser la couche de persistance en utilisant différentes stratégies de chargement et de mise en cache.
Pré-requis
Participants
Programme de formation
ORM, JPA ET HIBERNATE : DE QUOI PARLE-T-ON ?
-
Rappels rapides sur l'API JDBC
-
Quelles sont les limites de JDBC ?
-
Qu'est-ce qu'un ORM et qu'est-ce qu'il apporte de plus ?
-
La solution d'ORM standardisée par Java EE
- JPA (Java Persistance API)
-
Liens avec l'API EJB 3
-
Liens entre Hibernate et JPA
-
Les autres implémentations JPA
- Open JPA et Eclipse LINK
DÉMARRAGE D'HIBERNATE
-
Déploiement d'une base de données MySQL
-
Démarrage du logiciel Hibernate
-
Définir le mapping via un fichier XML (non standardisé)
-
Utilisation de l'API native Hibernate
-
Travaux pratiques
- Définition et utilisation d'un mapping XML avec l'API Hibernate
-
Définir le mapping via les annotations JPS
-
Utilisation de l'API JPA
-
Travaux pratiques
- Définition et utilisation d'un mapping avec JPA
-
Comparaison Mapping XML VS Mapping JPA
-
Comparaison API native Hibernate VS API JPA
-
Outils JPA/Hibernate proposé par Eclipse
-
Travaux pratiques
- Utilisation des outils proposés par Eclipse
CONFIGURATION DU MOTEUR JPA ET DES LOGS
-
Configuration JPA
-
Intégration avec Log4J
-
Activation de certains Logger
- Ordres SQL produits, paramètres...
-
Travaux pratiques
- Journalisation des requêtes SQL générées par l'ORM JPA
LE MAPPING JPA
-
Mapping des assocations unidirectionnelles sans table d'association
- OneToOne, ManyToOne et OneToMany
-
Maping des associations unidirectionnelles avec table d'association
- OneToOne, ManyToOne, OneToMany et ManyToMany
-
Mapping des associations bidirectionnelles
-
Mapping des collections
-
Travaux pratiques
- Mapping d'un ensemble de classes relatives à la gestion d'un site de vente en ligne
-
Mapping de l'héritage via les trois stratégies disponibles
-
Travaux pratiques
- Mapping des liens d'héritage préents dans notre modèle de classes
-
Gestion des cascades
REQUÊTES JPQL (JAVA PERSISTENCE QUERY LANGUAGE)
-
Comparatif JPQL et HQL (Hibernate Query Language)
-
Requêtes JPQL simples
-
Requêtes JPQL polymorphiques
-
Utilisation de fonctions d'agrégation
-
Sous-requêtes JPQL
-
Gestion des différents types de jointures
-
Travaux pratiques
- Production et exécution de différents types de requête afin d'extraire des commandes de la base de données
-
Utilisation de l'API de criteria
-
Travaux pratiques
- Mise en œuvre d'un criteria
L'API JPA
-
Définition et utilisation de paramètres nommés, "Named parameters"
-
Définition et utilisation de requêtes nommées, "Named queries"
-
Travaux pratiques
- Mise en œuvre de "Named parameters" et de "Named queries"
-
Gestion des requêtes par lots, "Batch queries"
-
Travaux pratiques
- Réalisation de "Batch queries"
-
Cycle de vie d'un objet persistant
-
API de manipulation de vos objets persistants
-
Travaux pratiques
- Utilisation de l'API JAP
-
Rappels sur le concept de transaction
-
Gestion des transactions avec JPA
-
Travaux pratiques
- Utilisation de transactions
LES DIFFÉRENTES STRATÉGIES DE CHARGEMENT
-
Introduction
-
Chargement paresseux, "Lazy loading"
-
Rapatriement immédiat, "Eager fetching"
-
Chargement explicite
-
Bonnes pratiques
UTILISATION DU CACHE DE PREMIER NIVEAU
-
Différences entre les méthodes load et get
-
Différences entre les méthodes save et persist
-
Lecture et écriture par lots
-
Suppression de données dans le cache
MISE EN ŒUVRE D'UN CACHE DE SECOND NIVEAU
-
Aspects Généraux
-
Utilisation de l'implémentation Ehcache
-
Utilisation d'un cache de requêtes
-
Autres types de caches