Я разрабатываю приложение Spring MVC, я выполнил основную функцию crud, но я хочу, чтобы моя операция update
была потокобезопасной, поэтому один и только один человек может редактировать объект. Итак, я сделал механический подход, который основан на создании атрибута inUse
, поэтому всякий раз, когда пользователь хочет отредактировать объект, атрибут inUse
имеет значение 1
, поэтому ни один другой пользователь не может редактировать этот объект. Ясно, что это не лучшая вещь, потому что я не могу знать, свободен ли ресурс или нет после редактирования! (Например, если пользователь нажмет на редактирование, затем закройте страницу, объект будет заблокирован неопределенно)Блокировка форм весной MVC
Могу ли я решить эту проблему, используя Spring Batch? есть ли лучший способ сделать это с помощью Spring MVC? Благодарю.
Чтобы все было просто, вы можете использовать поле @Version в доменном слое: http://docs.oracle.com/javaee/6/api/javax/persistence/Version.html – gipinani
Я вижу, что аннотация @Version позволяет предотвращать одновременную фиксацию транзакции в поле ... Но в моем случае я не хочу, чтобы пользователь получал доступ к форме (на самом деле форма длинная, это плохая идея, чтобы пользователь мог заполнить поля и только когда захочет чтобы применить изменения, которые он получил исключение! Я хочу этого избежать) – TheByeByeMan
Я мог бы также использовать атрибуты изоляции Transactional. Проверьте справочную документацию, ** Serializable ** является наиболее полным, но имеет небольшую стоимость производительности. Таким образом, вы можете избежать объявления и использовать ** inUse ** переменная/поле –