JPA avec Hibernate Durée 3 jour(s) (HIBERNATE-03) La persistance des données d'une application Java/JEE Description Hibernate est l'outil de mapping objet/relationnel le plus connu du monde Java. Nous verrons comment écrire une couche de persistance avec l'API JPA. Cette formation aborde les nouveaxu concepts de JPA 2.1 et Hibernate 5. Elle donne les bonnes pratiques pour accéder à une base de données relationnelle de manière performante et maintenable. 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 Java Public Architecte Développeur Prérequis Connaissance de Java. Notions sur Maven et Spring. Répartition 50% Théorie, 50% Pratique Programme Introduction Concepts et enjeux de la persistance des données De JDBC aux ORM Standardisation des ORM : naissance de la spécification Java Persistance API Hibernate : ses origines, son écosystème Lazy-loading d'une relation to Many Lazy-loading d'une relation to One Utilisation des proxies: les pièges à éviter Le problème du 1+N Select et ses solutions Optimisation Le cache de second niveau Les statistiques Mise en place Installation du produit et paramétrage des fichiers de configurations Pool de connexions Traces SQL Premier mapping Mapping avancé Le verrouillage optimiste et pessimiste Les clés multiples Spring et architecture applicative Découpage en couche et design pattern DAO La portée de l'EntityManager et de la transaction Intégrer Hibernate/JPA dans une application Spring Génération des DAO avec Spring Data JPA Mapper un objet Java simple sur table Configuration par convention, par annotation et par XML Générateur d'identifiants Manipulation EntityManager: rôle, initialisations Transiente, attachée, détachée: le cycle de vie d'une entité Les transactions Create, Read, Update, Delete avec JPA: les opérations de base de l'EntityManager Le flush Les relations Relation One to Many/Many to One Relation Many to Many Relation One to One Relation bidirectionnelle Cascading L'héritage Stratégie un seule table Stratégie une table par classe concrète Stratégie une table par classe Avantages et inconvénients de chaque stratégie Héritage technique avec MappedSuperClass Les composants Notion d'entité et de valeur Mapper un classe avec Embedded Collection de composants Le requêtage Un mode de requêtage du monde objet basé sur SQL Exploration des opérateurs du langage JPQL Injection des paramètres dans les requêtes Requêtage dynamique avec l'API Criteria Génération du meta modèle Le lazy-loading Tests Comment tester un DAO JPA ? Utilisation de Spring Test Introduction à DBUnit