Как предотвратить проблему параллелизма в ОБНОВЛЕНИИ через iBatis

Наше веб-приложение Java EE выполняет операции с базой данных, используя iBatis (ORM). Процесс работы с базой данных выглядит следующим образом

поток : JSP --->Действие --->ServiceIMpl --->DaoImpl ---->Вызов запроса на обновление через ' Ibatis

Заметка: Акция, Сервис & Классы DAO создаются с использованием Spring 2.5 'Техника внедрения зависимостей. Мы используем Struts2.

проблема: 2 одновременных пользователя ищут одну и ту же запись, а Пользователь1 обновляет Атрибут1, а Пользователь2 обновляет Атрибут2. Пользователь1 сначала нажимает наСохранить' и затем пользователь2 нажимает кнопку «Сохранить» (они следуют друг за другом с разницей в несколько секунд). Когда мы видим данные в базе данных, только User1 'с обновлением присутствует. Столбцы аудита также показывают только User1 'с обновлением. Пользователь2 'Обновление атрибута 2 не выполнено, в то же время исключений не выдается.

Мы попытались использовать транзакцию begin и commit в iBatis, связанную с вызовом запроса на обновление, определенного в sqlmap xml. Та же проблема сохраняется. Мы также попытались удалить эти команды транзакции, но проблема сохраняется.

Должны ли мы делать что-то особенное / другое для обработки параллелизма во время обновлений? Wouldn»t ORM, такие как iBatis, справляются сами?

Дополнительная информация: Дальнейшее расследование выявило следующую информацию.

Когда пользователь1 & Пользователь2 нажимает на запись, это 'полные данные выбираются для просмотра.

Теперь, когда оба User1 & Пользователь2 меняет несколько атрибутов и нажимает кнопку «Сохранить» (одновременно), скажем сначала «Пользователь1»данные обновляются, а затем пока User2 'данные обновляются, уже обновленные данные пользователя 1 перезаписываются и потерял.

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

Ответы на вопрос(2)

Ваш ответ на вопрос