6

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

+0

Блокировка Java и JDBC не связаны так, как вы ищите. В чем проблема, которую вы пытаетесь решить? Блокировки Java - это блокировки, которые могут быть получены с помощью «синхронизированного» ключевого слова. Итак, что именно вы ищете? – Pavan

+0

Я ищу блокировку базы данных – user2434

ответ

3

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

This Oracle paper должен предоставить вам несколько советов о том, как это сделать.

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

11

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

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

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

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

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

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

Смежные вопросы