Salut,
J'ai un gros pb avec Hibernate.
J'utilse une table User et j'ai 2 accès concurrents (via des methodes web services) à une même entrée de ma table mysql.
Chaque methode permet de modifier un champ specifique de mon entrée.
J'ai qq chose du genre :
Methode1
User user = get(user);
try {
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
user.setData1(data1);
session.update(user);
transaction.commit();
session.close();
} catch (HibernateException e) {
e.printStackTrace();
}
Methode2
User user = get(user);
try {
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
user.setData2(data2);
session.update(user);
transaction.commit();
session.close();
} catch (HibernateException e) {
e.printStackTrace();
}
Le problème est que mes 2 accès sont appelés en parallèle et mes objets User ne sont pas synchronisés. Pb d'atomicité ou je ne sais pas quoi.
Mes 2 process appellent getUser (query select sur bdd) on va dire en même temps. Par contre si la donnée 1 est modifiée par le premier process, cette modif n'est pas prise en compte et est écrasée par le 2è process en positionnant la donnée 2.
Comment puis-je faire ?
Merci.
Partager