Introduction à la problématique de persistance
Origines du problème.
Les facettes de l’impédance mismatch
Architectures de la persistance
Historique des solutions (JDBC, JDO, Hibernate)
Rappel sur JDBC / SQL et ses limites
Travaux Pratiques: Réalisation du TP1 (persistance à l’aide de JDBC suivant le pattern DAO)
Premier pas avec Hibernate – mapping de l'identité
Installer Hibernate
Initialiser le framework Hibernate
Opérations CRUD sur les objets
Identité d’objet et cycle de vie
Travaux Pratiques: Réalisation du TP2 (reprise du TP1 avec Hibernate)
Mapping de l'héritage
Le problème du mapping de l’héritage
Notion de relations polymorphes
Approche: une table par classe concrète
Approche: une table par hiérarchie
Approche: une table par classe.
Travaux Pratiques: Réalisation du TP3 (enrichissement du TP2 avec l'héritage)
Mapping des associations
Association et navigation.
Association 1-N, N-1, N-N
Composition
Classe association
Travaux Pratiques: Réalisation du TP4 (enrichissement du TP3 avec plusieurs types d'associations)
Accès en lecture aux objets (HQL, API Criteria et requêts SQL)
Le pattern Lazy Loading.
Usage de HQL
Usage de l’API Criteria
Usage des SQL Query
Travaux Pratiques: Réalisation du TP5 (requêtes bâties sur le TP4)
Accès en lecture aux objets (HQL, API Criteria et requêts SQL)
Principe de persistance transitive.
Attachement / détachement des objets d’une session
Supprimer une grappe d’objets
Gestion des transactions
Rappel sur la notion de transaction
Transaction et concurrence d’accès
Niveaux d’isolation
Stratégies de contrôle de la concurrence
Gestion optimiste
Gestion pessimiste
Notion de transaction utilisateur
Architecture et Hibernate
Architecture d’Hibernate.
Comment gérer la session Hibernate (pattern du ThreadLocal)
Comment programmer des règles métiers (frontière métier / accès aux données)
Usage du Pattern Data Access Object (DAO) avec Hibernate
Comment gérer les transactions utilisateurs avec Hibernate
Intégrer Hibernate dans une application web.
Travaux Pratiques: Réalisation du TP6 (Cas d'utilisation complet)