Techniques de persistance Java et JPA
- Les différents mécanismes de persistance : API Java et frameworks.
- La solution Java Persistence API (JPA).
- Intégration de JPA dans une application Java EE.
Développement d'une classe persistante
- Coder la classe persistante.
- Effectuer le mapping Objet/relationnel.
- Configurer et démarrer le moteur JPA.
- Effectuer une requête JPQL.
- Sauvegarder un objet persistant.
Travaux pratiques
Mapping d'une classe. Exécution d'une requête JPQL.
Mapping Objet/relationnel avec JPA
- Contexte et objectifs d'un ORM.
- Principe de développement des classes persistantes.
- Utilisation des annotations pour configurer un mapping Objet/Relationnel.
- Mapping des classes et des associations.
- Stratégie de mapping pour l'héritage.
Travaux pratiques
Choisir un générateur d'identifiant. Mise en oeuvre d'une relation one-to-one, one-to-many et d'héritage.
Manipuler les objets persistants
- Les différentes techniques de lecture.
- Les stratégies de chargement.
- Principe du lazy loading.
- Les opérations CRUD (Create/Read/Update/Delete).
- Cycle de vie des objets persistants.
- Synchronisation avec la base de données.
Travaux pratiques
Créer, mettre à jour et supprimer des objets persistants.
Utilisation avancée du mapping
- Clé primaire composée, mapping multitables.
- Contrôler les requêtes INSERT et UPDATE.
- Associations de type list, map et many-to-many.
Travaux pratiques
Mapping d'une table secondaire. Mise en oeuvre d'une association many-to-many.
Le langage JPQL
- Les requêtes d'interrogation.
- Opérations sur les chaînes de caractères et les données temporelles.
- Jointures internes, externes et rapportées.
- Principe des sous-requêtes.
- Requêtes sur les ensembles.
Travaux pratiques
Effectuer une requête JPQL optimisée.
Transactions et accès concurrents
- Rappel des propriétés d'une transaction.
- La gestion transactionnelle avec JPA.
- Intégration dans une application Web et EJB.
- Verrouillage pessimiste et optimiste.
Travaux pratiques
Mise en œuvre de la gestion transactionnelle.