Formation aux technologies de l'informatiqueformation java

Développer une couche métier avec Hibernate et Spring

FJ220
Prix inter : 2230 € HT Durée: 5 jours
Prix intra*: 5950 € HT
* jusqu'à 8 personnes
Public
Public : développeurs, chefs de projet, architectes
Niveau : expert
Prochaines sessions
Nous contacter au 06 68 36 54 43 ou par mail
Description

Hibernate et Spring sont deux frameworks très populaires dans le monde de l'open source Java. Le premier assure la persistance des données, et le second l'intégration des composants métier dans les applications JEE.

Ce cours vous permettra de maîtriser le développement d'une couche Hibernate dans un contexte Spring. D'une part, vous apprendrez comment utiliser de façon efficace les mécanismes fondamentaux d'Hibernate (requêtage SQL et Criteria, lazy loading, objets détachés...). D'autre part, vous verrez comment développer une couche de services métier, souple et puissante, suivant les principes de Spring Framework (injection, intégration Hibernate, gestion transactionnelle...).

Pré-requis
Les participants doivent posséder un bon niveau en développement Java, et connaître le langage SQL. La connaissance de XML est un plus.
Programme
  • Techniques de persistances Java

    • Présentation des différentes techniques de persistances
    • Les types de frameworks de persistances
    • La solution Hibernate : un ORM pragmatique
    • Intégration de la couche Hibernate dans une application JEE
  • Développer une classe persistante simple

    • Coder la classe Java à rendre persistante
    • Créer le fichier de mapping Objet / Relationnel
    • Définir les propriétés de configuration (connexion bdd, dialecte Hibernate, fichier de mapping...)
    • Démarrer le moteur Hibernate et effectuer une requête HQL
  • Mapping objet / relationnel avec Hibernate

    • Contexte et objectifs d'un outil de mapping Objet / Relationnel comme Hibernate
    • Développement des classes persistantes : POJO, unicité des objets, sérialisation, associations
    • Effectuer le mapping des classes : identifiants, propriétés, types Hibernate
    • Effectuer le mapping des associations : component, one-to-one, one-to-many, many-to-one
    • Mapper une hierarchie d'héritage : les différentes stratégies possibles
  • Manipuler les objets persistants

    • Charger les objets persistants : les différentes techniques de lecture (HQL, API Criteria...)
    • Les stratégies de chargement : lazy loading, chargement immédiat, chargement agressif
    • Mécanisme détaillé du lazy loading : comment maîtriser le chargement retardé
    • Les opérations CRUD : insertion, lecture, mise à jour et suppression d'un objet persistant
    • Comprendre le cycle de vie des objets persistants gérés par Hibernate
    • Synchronisation avec la base de données : les différents modes de flushing
    • Principe de la persistance en cascade lors des opérations d'écriture
  • Utilisation avancée du mapping

    • Mapping des classes et propriétés : formule SQL, synchronisation avec les triggers...
    • Contrôler les requêtes INSERT et UPDATE générées par Hibernate
    • Créer des collections de valeurs et des collections de composants
    • Mapping des associations : sémantiques bag, list et map, associations many-to-many
    • Mapping des types Blob
  • Le langage HQL et l'API Criteria

    • Requêtes d'interrogation : sélection des données, opérateurs de comparaison, opérateurs logiques
    • Opérations sur les chaînes de caractères et les données temporelles
    • Principe des requêtes avec jointures implicites, internes, externes et jointures rapportées
    • Principe des sous-requêtes et des prédicats associés (in, all, any, some, exist)
    • Effectuer des projections avec HQL et utiliser l'instanciation dynamique
    • Requêtes sur les ensembles : les clauses count, min, max, avg, having, group by
  • Transactions et accès concurrents

    • Rappel des propriétés d'une transaction : les propriétés ACID
    • Gestion de l'atomicité et de l'isolation des données avec Hibernate
    • Intégration de la couche Hibernate dans une application Web : environnements JTA et non-JTA
    • Les techniques de verrouillage pessimiste et optimiste
  • Les principes fondamentaux de Spring Framework

    • Présentation de la notion de conteneur léger dans le cadre d'un développement JavaEE
    • Intérêt du design pattern Inversion de Contrôle (IoC) et des techniques AOP
    • Mise en oeuvre du conteneur Spring avec l'ApplicationContext
    • La configuration des composants par XML et par annotations
    • Les différentes techniques d'injection des dépendances avec Spring
    • Cycle de vie des beans Spring : portée des beans et méthodes de callback
    • Notion de post-processeur : exemple d'utilisation pour externaliser des propriétés de configuration
  • Intégration Spring / Hibernate et gestion transactionnelle

    • Le modèle de programmation d'accès aux données : traduction des exceptions, classes de support et classes template
    • Utiliser Spring pour simplifier le développement Hibernate : les différentes stratégies
    • La notion de propagation des transactions entre services métier
    • Gestion déclarative des transactions par configuration XML et par annotations
  • Construction d'application web avec Spring Framework et Hibernate

    • Configuration et instanciation du contexte Spring dans un environnement web
    • Paramétrer Hibernate en environnement Web
    • Utiliser des composants métier Spring depuis une application Struts ou JSF
Travaux Pratiques
Les exercices proposés vous permettront d'expérimenter les différents mécanismes d'Hibernate et Spring abordés dans le cours. Ils sont réalisés avec Eclipse, Tomcat, MySQL et vous utiliserez JUnit pour tester les composants que vous écrirez. Vous intègrerez enfin vos classes métier à une mini-application web qui vous sera fournie.
Intervenants
Olivier Hanny
Olivier est un spécialiste des technologies Java / JEE depuis l'année 2000, après une carrière d'ingénieur dans la sidérurgie. Il est aujourd'hui consultant indépendant, et partage son temps entre des missions de réalisations informatiques (Java, Flex) et l'animation de formations.