Bonjour,
J'essaye depuis quelques temps de migrer mon application Hibernate de Mysql à Oracle XE.
J'utilise Hibernate 3.4, un mapping "optimistic-lock=all", FlushMode.MANUAL, ManagedSessionContext.
J'ai plusieurs soucis.
Le premier concerne le mode optimiste. Il semble que Oracle ne le gère pas.
Ainsi par exemple, lorsque j'ai de la concurrence et j'update le même objet,
a) Thread 1
Code:
sessionFactory.openSession()
session.beginTransaction()
update Object set value = '3' where object_id='2' and value='2';
Thread 2
Code:
sessionFactory.openSession();
session.beginTransaction();
update Object set value = '3' where object_id='2' and value='2';
b) Thread 1
Code:
session.flush();
session.getTransaction ().commit ();
session.close();
c) Thread 2
Code:
session.flush();
session.getTransaction ().commit ();
session.close();
L'étape c) retourne une exception sous MySQL et pas sous Oracle.
C'est ce qui me pose un problème.
Cela m'empêche de détecter une concurrence, et donc de faire des retry.
Je ne souhaite pas utiliser de lock DB.
Pour résummer ma question est : comment utiliser le mode Optimiste de Hibernate avec Oracle XE.
Merci beaucoup