ORM, JPA et Hibernate : de quoi parle t’on ?
- Rappels rapides sur l’API JDBC
- Quels 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 annotation 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és 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 associations unidirectionnelles sans table d’association (OneToOne, ManyToOne et OneToMany)
- Mapping 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ésents dans notre modèle de classes
- Gestion des cascades
Requêtes JPQL
- Comparatif JPQL (Java Persistence Query Language) 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 : productions et exécution de différents type de requêtes afin d’extraire des commandes de la base de données
- Utilisation de l’API de 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 oeuvre 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
- Travaux pratiques : mise en oeuvre d’un criteria
Optimisations de votre couche de persistance
- Les différentes stratégies de chargement : « Lazy loading », « Eager fetching » et « Explicit loading »
- Travaux pratiques : utilisation des différentes stratégies et constatation des performances
- Utilisation des différents caches
- Travaux pratiques : exploitation des caches