Bonjour,
je viens vous demander conseil pour mettre en place une bonne pratique pour la gestion des données dans mon application Java.
Je vous explique mon dilemme :
l'utilisateur ouvre un formulaire dans lequel les données sont chargées depuis la base de données en utilisant Hibernate.
Lorsque l'utilisateur sauvegarde les données du formulaire ou quitte le formulaire, cela déclenche l'action saveBackAction() qui va déclencher plusieurs autres actions dont saveFrontAction(), celle qu'il nous intéresse.
Lorsque l'utilisateur ouvre se connecte à l'application, la session est alors créée et sera globale à toute l'application.
Si une erreur survient lors d'une sauvegarde par exemple, une nouvelle session est recréée pour permettre à l'utilisateur de continuer à utiliser l'application.
Lorsque l'action saveFrontAction() est appelée, elle met en place une transaction dans laquelle les champs du formulaire sont chargés dans les objets Java (=entités Hibernate) prévus afin de les sauvegarder en base de données :
-> Dans le cas où l'utilisateur sauvegarde les données la transaction est commitée en base de données.
-> Dans le cas où l'utilisateur quitte le formulaire sans enregistrer les données, la transaction est mise en rollback et les données ne sont pas sauvegardées.
J'utilise ce mécanisme de gestion des entités pour laisser le soin à Hibernate de détecter la modification des données en session grâce à l'instruction "session.isDirty()".
Cela me permet de proposer à l'utilisateur de sauvegarder ses données lorsqu'il quitte le formulaire sans sauvegarder.
Que pensez-vous de cette manière de procéder ?
Merci pour le temps que vous prendrez pour me répondre, votre retour d'expérience me sera vraiment précieux.
berni.
Partager