Bonjour,
J'utilise Hibernate depuis déjà un certain temps avec des bases MySQL ou Oracle mais je viens de rencontrer un problème assez troublant sur une application Web utilisant une base MS SQLServer.
Un premier utilisateur effectue une transaction assez longue incluant de la mise à jour, de la suppression et de l'ajout de données dans 4 ou 5 tables. La transaction peut durer plusieurs minutes.
Dés lors qu'un second utilisateur souhaite souhaite accéder à une de ces tables en lecture, on obtiens au bout d'un certain temps une exception : org.springframework.dao.CannotAcquireLockException.
Lorsque je regarde l'état de ma base, je constate bien que ma première transaction lock les tables.
J'ai essayé de jouer sur le niveau d'isolation de mes transactions en modifiant la propriété "hibernate.connection.isolation" avec à peut près toutes les valeurs possibles mais cela ne change rien.
J'ai du mal à comprendre si le problème vient d'une mauvaise utilisation d'Hibernate ou d'une spécificité de SQLServer. Pouvez-vous m'aider sur ce point svp ?
Merci.
Partager