Tutoriel hibernate N°14 : transactions et gestion accès concurrents

////Tutoriel hibernate N°14 : transactions et gestion accès concurrents

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é.

tutoriel-hibernate-acces-concurrents-version-1

 Identifiez l’impact sur votre mapping.

tutoriel-hibernate-acces-concurrents-version-2

Considérez une application permettant de créez / mettre à jour un calendrier de formations java/jee (objis !) : titre de la formation et date.

tutoriel-hibernate-acces-concurrents-version-0

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 :

tutoriel-hibernate-acces-concurrents-version-3

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

tutoriel-hibernate-acces-concurrents-version-4

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

tutoriel-hibernate-acces-concurrents-version-5

Jean modifie effectivement le thème avec SOA.

tutoriel-hibernate-acces-concurrents-version-6

Lorsque Pierre veut mettre à jour le thème…
tutoriel-hibernate-acces-concurrents-version-7

…une exception particulière est levée par hibernate.

tutoriel-hibernate-acces-concurrents-version-8

 

tutoriel-hibernate-acces-concurrents-version-9

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

demoHibernateWebIntro

Conclusion

Dans ce tutoriel, vous avez mis en œuvre une technique de gestion des accès concurrents avec hibernate.

2018-01-27T18:56:54+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java