Maîtrisez la gestion d’accès concurrents aux données avec hibernate.Comprenez la notion de ‘niveau d’isolation’ et la relation avec hibernate. Comprenez le versionning hibernate. récupérez l’exception ObjectStaleStateException.
Objis, spécialiste de la formation Java, est heureux de vous offrir ce
tutoriel, extrait de séances pratiques de la formation HIBERNATE dispensée par Objis.
Les + objis
70% de travaux pratiques
Clé USB avec tous les outils utilisés + Corrigés TPs
Bilan pédagogique individuel + conseils
Prérequis, outils et versions
Tutoriel Hibernate N°2 : votre première application hibernate
Liens utiles
+ de 100 tutoriaux java/jee Objis
Tutoriaux HIBERNATE Objis
Objis, spécialiste formation java depuis 2005
Site hibernate (javadoc, faq)
Documentation (chap. 10) : working with objects
Niveaux d’isolation Postgresql
Objectifs
Comprendre stratégie gestion accès concurrents avec hibernate
Comprendre les niveaux d’isolation et relation avec hibernate
Programme
Partie 1 : Mise en oeuvre versionnage Managé
Partie 2 : Démonstration
Durée
30 min.
Contexte et architecture cible
Une technique possible pour gérer l’accès concurrent est le ‘versionning managé’ : ajoutez une propriété ‘version’ dans votre entité.
Identifiez l’impact sur votre mapping.
Considérez une application permettant de créez / mettre à jour un calendrier de formations java/jee (objis !) : titre de la formation et date.
Deux personnes, Pierre (basé à Paris) et Jean (basé à Lyon), ont un profil ‘Administrateurs’ et peuvent modifier les données en base de données.
L’administrateur Pierre, crée un premier évènement (FormationGWT le 10-10-2009). Résultat suivant :
Puis il veut modifier la thème de cette formation (MAVEN au lieu de FormationGWT). Il clique sur le lien ‘Modifier cet évènement’. L’écran suivant apparaît
Au même moment le deux administrateur, qui a constaté l’erreur de thème de la formation à cette date, veut aussi modifier le thème mais cette fois avec SOA. Il clique lui aussi sur le lien ‘Modifier cet évènement’. L’écran suivant apparaît
Jean modifie effectivement le thème avec SOA.
Lorsque Pierre veut mettre à jour le thème…
…une exception particulière est levée par hibernate.
Lignes d’erreur :
— ERROR org.hibernate.event.def.AbstractFlushingEventListener – Could not synchronize database state with session
— org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.objis.demohibernate.domaine.Event#1]
Exemple projet démo
Conclusion
Dans ce tutoriel, vous avez mis en œuvre une technique de gestion des accès concurrents avec hibernate.