Bonjour
Je bute sur un problème de logique d'utilisation Hibenate, ça doit pourtant être facile mais voilà, si vous pouvez me renseigner...
Il s'agit d'une appli web assez standard (struts, hibernate, spring).
Voici le comportement que je souhaiterai avoir, je viens d'une page de modification d'un objet et je le sauvegarde :
1) J'arrive dans l'action, mon objet métier est attaché à la session Hibernate
2) je fais des modifications dessus d'après les données du formulaire Struts
3) j'ai besoin de faire des tests sur l'objet avant sauvegarde, il me faut l'objet en l'état avant sauvegarde. Je récupère donc un autre objet avec un load(), je le détache de la session, puis je compare l'objet initial et l'objet à sauvegarder
4) si tout est ok, je laisse l'objet se sauvegarder. Sinon, une exception permet de revenir vers l'écran de saisie.
Mon problème c'est le 3). Si je demande à Hibernate de charger le même objet déjà en session mais dans son état initial, il détecte que des modifications ont eu lieu et me fait un session.flush avant mon load (du coup, l'objet se sauvegarde tout seul avant de commencer les tests !).
Comment puis-je éviter ce comportement ?
Est-ce que c'est une mauvaise utilisation d'Hibernate que d'avoir 2 objets identiques à gérer mais dans un état différent, l'un à sauvegarder, et l'autre pour comparer ? Si oui, avez vous une meilleur pratique à me conseiller ?
Merci d'avance !![]()
Partager