Comment prévenir le problème de concurrence dans la mise à JOUR via iBatis

Notre Java EE web application effectue les opérations de base de données à l'aide de iBatis (ORM). L'opération de base de données de flux est comme ci-dessous

Flux : JSP --->Action--->ServiceIMpl--->DaoImpl---->Appel de requête de mise à jour thru' IBatis

Note: L'Action, Service & classes DAO sont instanciés à l'aide de Spring 2.5 de l'Injection de Dépendance technique. Nous utilisons Struts2.

Problème: 2 utilisateurs simultanés de recherche pour le même enregistrement et mises à jour Utilisateur1 Attribut1 alors que User2 mises à jour Attribut2. User1 premier clique sur "Enregistrer" puis User2 clique sur enregistrer (ils suivent les uns les autres avec une différence de quelques secondes). Quand nous voyons les données dans la base de données, seul l'Utilisateur1 mise à jour est présent. La Vérification par ailleurs, les colonnes montrent seulement l'Utilisateur1 mise à jour. Le User2 de mise à jour sur Attribut2 n'est pas fait , à la sametime, aucune exception n'est levée.

Nous avons essayé en utilisant le début de la transaction et de la transaction de validation dans iBatis entourant la invokation de la requête de mise à jour défini dans le sqlmap xml. Le même problème persiste. Nous avons également essayé de supprimer les commandes de transactions, mais le problème persiste.

Devrions-nous faire quelque chose de spécial/différentes pour gérer la simultanéité lors des mises à jour ? Ne serait pas Orm comme iBatis gérer par eux-mêmes ?

Informations supplémentaires: une enquête ultérieure a révélé les informations suivantes.

Quand User1 & User2 clique sur l'un enregistrement complet de l'extraction des données pour l'affichage.

Maintenant, quand les deux User1 & User2 changements de quelques attributs, puis cliquez sur save (simultanément), dire que la première Utilisateur1 données est mise à jour et puis tout User2 de données est en cours de mise à jour, la mise à jour des données de l'utilisateur User1 est écrit & perdu.

What approach is usually followed in such screens to handle such scenarios ?

Ce n'est pas vraiment un struts2 question. Ne sais pas iBatis, mais c'est bizarre, aucune exception n'est levée, augmenter le niveau d'enregistrement si possible. Découvrez ce schéma de verrouillage est utilisée, pensez à le verrouillage optimiste.
j'ai mis à jour la question avec quelques mises à jour..

OriginalL'auteur yathirigan | 2012-09-27