Formation JPA avec Hibernate

La persistance des données d'une application Java/JEE

Durée 3 jours
Prix(HT) : 1590 €
HIBERNATE-03

Prochaines sessions

21 février 2018
Erik LENOIR
Paris
16 avril 2018
Alexandre BARON
Rennes

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

Pré-requis : 

  • Connaissance de Java. Notions sur Maven et Spring.

Public : 

  • Architecte
  • Développeur

Pédagogie : 

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

Mise en place

  • Installation du produit et paramétrage des fichiers de configurations
  • Pool de connexions
  • Traces SQL

Premier mapping

  • 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

  • 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

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

Tests

  • Comment tester un DAO JPA ?
  • Utilisation de Spring Test
  • Introduction à DBUnit