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