| JPA - Hibernate |
| Gérer les données d'une application Java/JEE avec JPA |
Référence : HIBERNATE-JPA-03
Durée : 3 jour(s) |
Présentation
Cette formation vous permettra de comprendre les limitations de JPA 1.0 et les nouveautés de JPA 2.0. Le concepteur du cours, Laurent Delvaux a animée une conférence au Breizh JUG sur le sujet. Pour voir la vidéo sur Parleys
|
|
Objectifs
- Assimiler les concepts et les enjeux du mapping objet / relationnel
- Maîtriser les principales fonctionnalités de JPA
- Développer et intégrer une couche de persistance dans une application JavaSE ou JavaEE
|
Contenu
Introduction et Architecture
- Concepts et enjeux de la persistance des données
- Les différents modes d'accès aux données : simple appels JDBC, les EJB1 et EJB2 entités, les autres ORM
- Standardisation des ORM : naissance de la spécification Java Persistance API
Mise en oeuvre d'une implémentation
- Les produits implémentant la spécification JPA
- Autres implémentations : BEA Kodo, OpenJPA, ...
- Installation du produit et paramétrage des fichiers de configurations
Intégration dans l'architecture
- Intégration dans une application JEE en mode conteneur
- Intégration dans le conteneur léger Spring
- Intégration directe dans une application WEB
Définition d'une entité
- Pont entre le monde objet et le monde relationnel
- Une entité est avant tout un POJO matérialisé par quelques éléments : une classe Java, une définition de mapping et une clé primaire
- Comparaison entre beans Entité et beans Session
- Simplification d'accès à l'intérieur et à l'extérieur d'un container JEE
Manipulation d'entités
- Il ne s'agit plus d'opérations isolées de créations ou de suppressions mais d'opérations gérées par un cycle de vie
- Introduction du contexte de persistance reliant les entités à la base de données : l'EntityManager
- Détail des différents états d'une entité : neuf, managé, détaché, supprimé
- Mise en relation des différents états d'une entité avec les deux types de contexte de persistance : portée d'une transaction ou portée étendue
- Réalisation des opérations CRUD de manipulation d'une entité avec l'API EntityManager
- Utilisation des événements générés lors des transitions d'états du cycle de vie
Exploration des mappings
- Mise en place facilitée par les annotations JavaSE 5
- Alternative ou complémentarité des fichiers de configuration XML
- L'identité : le garant de la correspondance unique entre instances d'objets et enregistrements en base
- L'importance du choix de la stratégie de génération d'identifiants
Relation entre entités
- Présentation des types de relation : 1-1, 1-n, n-1 et n-m
- Choix du sens des relations : unidirectionnelle VS bidirectionnelle
- La persistance en cascade
- Les initialisations paresseuses : lazy-loading
Héritage
- Présentation des trois types de stratégie d'héritage entre entités
- Avantages et inconvénients de chaque mode
- Les autres modes d'héritage
Le langage de requête JPQL
- Un mode de requêtage du monde objet basé sur SQL
- Différence avec le langage de requêtes SQL natives
- Exploration des opérateurs du langage JPQL
- Présentation du mécanisme des requêtes dynamiques et des requêtes statiques
- La puissance des requêtes polymorphiques
- Améliorer les performances avec l'opérateur «fetch»
Transactions et accès concurrents
- Les propriétés d'une transaction
- Mise en place des transactions : « JTA » et « Resource-local »
- Les techniques de verrouillage : « Optimistic locking » et « Explicit read and write lock »
|
| * Le déjeuner est compris dans le tarif. |
| ** Les livres sont offerts uniquement pour les formations inter-entreprise. Zenika se réserve le droit de changer le livre proposé à tout moment. |
|
| Auteur du cours |
| |
|
Laurent Delvaux est formateur certifié, ainsi qu'évangeliste BIRT et met régulièrement en oeuvre cette technologie sur des projets d'envergures. Scrum Master et agiliste convaincu, il aide les équipes de développement à s'auto-structurer et à augmenter leur productivité à l'aide de Scrum. A ce titre, il est membre du bureau du French Scrum User Group. |
|
|
|