Formation 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)
|
|
La prochaine session est animée par
|
Olivier Croisier est expert Java / Spring / Terracotta / Web. Il est certifié Java 5.0 avec 100%, certifié Spring 2.5 avec 86% et est formateur certifié Terracotta. Il est l'auteur du blog The Coder's Breakfast. De plus Olivier a publié plus de 200 articles sur différents blogs techniques et dans la presse spécialisée. |
|
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
|
Répartition :
50% Théorie, 50% Pratique |
Public :
Architecte, Développeur, Chef de projet |
Pré-requis :
Connaissance de Java |
Programme
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
- Hibernate
- Oracle TopLink
- 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 »
|
| * Les livres sont offerts uniquement pour les formations inter-entreprise. Zenika se réserve le droit de changer le livre proposé à tout moment. |
|
|