Bonjour,
voici mon problème :
je charge des informations depuis une base mysql dans une interface gràce à hibernate.
Je fais des modifications en local (i.e. je ne modifie pas directement la base) par le biais de cette interface.
Et je sauve (bouton "sauver" ^^) dans la base.
Le problème est que si 2 personnes utilisent ce logiciel en même temps... ça foire car si (dans cet ordre) un utilisateur A supprime une entrée x et qu'un utilisateur B modifie cette même entrée x, alors au moment de la sauvegarde de B, il va y avoir un problème car x n'existe plus.
Les solutions que j'envisage sont,
- Bloquer la base entière pour un seul utilisateur, mais je ne vois pas comment (la fonction TABLE LOCK de MySql ne semble pas appropriée)
- Vérifier avant de sauvegarder que l'état de la base n'a pas été modifié et, le cas échéant, message d'erreur : "attention, base modifié, blabla" (le principe étant que le logiciel ne devant, dans un usage normal, n'être utilisé que par une personne à la fois)
Cette solution me semble la plus satisfaisante mais je ne vois pas comment faire pour savoir si la base à été modifiée depuis la dernière sauvegarde à part en créant un gros objet "Base" au chargement et en le comparant à un autre objet "Base" qui serait obtenue en faisant un chargement préliminaire avant toute sauvegarde... J'aimerai VRAIMENT qu'il y ait une autre solution
Donc si vous avez des idées pour savoir si une base à été modifiée, pour autoriser une seule entité (homme, programme) à accéder à une base ou toute autre idée je vous en serais gré.
MERCI![]()
Partager