Tutoriel hibernate N°16 : comprendre le merge

////Tutoriel hibernate N°16 : comprendre le merge

Maîtrisez la notion d’objet détaché hibernate ainsi que les problématiques du ré attachement. Comprenez le cas d’utilisation, la valeur ajoutée ainsi que les limites de la méthode update(). Découvrez la stratégie de réattachement basée sur le merge.

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

Objectifs

 Comprendre l’opération de merge dans hibernate

 Identifier le cas d’utilisation des méthodes update() et merge()

Programme

 Contexte

 Partie 1 : Objets détachés

 Partie 2 : réattachement via update()

 Partie 3 : les limites d’update()

 Partie 4 : réattachement via merge()

Durée

30 min.

Données

tutoriel-hibernate-comprendre-merge-objet-detache-0bis

Partie 1 : objet détaché

 Analysez le code suivant

tutoriel-hibernate-comprendre-merge-objet-detache-1

QUESTION : qu’est ce qu’un état détaché dans hibernate ?

 Citez au moins un avantage et un inconvénient d’utiliser des objets détachés dans hibernate.

Partie 2 : ré attachement par update()

Afin de garantir à nouveau le service de persistance d’un objet détache, hibernate fournir plusieurs stratégies pour le ré attacher à un contexte de persistence.

 Analysez le code suivant :

tutoriel-hibernate-comprendre-merge-objet-detache-2

 En utilisant la documentation hibernate, expliquez ce qu’apporte la méthode update()

tutoriel-hibernate-comprendre-merge-update-db-OK

Partie 3 : limites de la méthode update()

 Analysez le code suivant :

tutoriel-hibernate-comprendre-merge-limite-update-1

 Quelle différence avec le code précédent ?

 Quel est le résultat de ce code ? Pourquoi ?

Exception levée : NonUniqueObjectException

Hibernate va lever une exception :

— Exception in thread « main » org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.objis.demohibernate.complexe.FormationInter#3]

Il ne sait pas quelle instance objet utiliser pour mettre à jour l’enregistrement : faut t’il utiliser l’instance détachée ou l’instance présente dans le contexte de persistance ?

tutoriel-hibernate-comprendre-merge-limite-update-2

Logs

trace-log-hibernate-update-exception-NonUniqueObjectException

Partie 4 : ré attachement par merge()

 Analysez le bloc suivant :

tutoriel-hibernate-comprendre-merge-3

 Le merge permet de répondre à la problématique non gérée par update().

tutoriel-hibernate-comprendre-merge-update-db-OK

 Analysez le code suivant

tutoriel-hibernate-comprendre-merge-merge-db-OK

 Expliquez.

 Quel résultat en base pour l’enregistrement ?

Code

code_demomerge

Corecttion

Hib-TP-16-merge-Correction

Conclusion

Dans ce tutoriel, vous avez mis en pratique la notion de merge dans hibernate.

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

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java