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
Tutoriel Hibernate N°2 : votre première application hibernate
+ 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
Comprendre stratégie gestion accès concurrents avec hibernate
Comprendre les niveaux d’isolation et relation avec hibernate
Partie 1 : Mise en oeuvre versionnage Managé
Partie 2 : Démonstration
Partie 3 :
30 min.
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
Dans ce tutoriel, vous avez mis en œuvre une technique de gestion des accès concurrents avec hibernate.
Le chemin le plus court pour avoir les réflexes et la méthodologie du bon développeur Hibernate :
Si vous appréciez notre sens du partage, devenez gratuitement membre ’classic’ du Club Objis :
Votez pour les prochains tutoriaux à publier
Préparez vos entretiens techniques
Valorisez votre profil / expertise
Identifiez des opportunités d’emploi
Recevez la newsletter objis.com