Как кодировать оптимистическую и пессимистическую блокировку из кода Java

Я знаю, что такое оптимистическая и пессимистическая блокировка, но когда вы пишете код Java, как вы это делаете? Предположим, я использую Oracle с Java, у меня есть какие-либо методы в JDBC, которые помогут мне сделать это? Как я буду настраивать эту вещь? Любые указатели будут оценены.

2 ответа

Вы можете реализовать оптимистические блокировки в своей таблице БД следующим образом (вот как в Hibernate делается оптимистическая блокировка):

  1. Добавьте в таблицу целочисленный столбец "версия".
  2. Увеличивайте значение этого столбца при каждом обновлении соответствующей строки.
  3. Чтобы получить блокировку, просто прочитайте значение "version" строки.
  4. Добавьте условие "версия = полученная_версия" в предложение where вашего оператора обновления. Проверьте количество затронутых строк после обновления. Если ни одна строка не была затронута - кто-то уже изменил вашу запись.

Ваше обновление должно выглядеть так

UPDATE mytable SET name = 'Andy', version = 3 WHERE id = 1 and version = 2

Конечно, этот механизм работает, только если все стороны следуют ему, в отличие от предоставляемых СУБД блокировок, которые не требуют специальной обработки.

Надеюсь это поможет.

Предположим, я использую Oracle с Java, у меня есть какие-либо методы в JDBC, которые помогут мне сделать это?

Этот документ Oracle должен дать вам несколько советов о том, как это сделать.

Нет конкретных методов JDBC. Скорее, вы достигаете оптимистической блокировки путем разработки запросов / обновлений SQL и определения границ транзакций.

Другие вопросы по тегам