Я знаю, что такое оптимистичная и пессимистичная блокировка, но когда вы пишете код на Java, как вы это делаете? Предположим, я использую Oracle с Java, есть ли у меня какие-либо методы в JDBC, которые помогут мне в этом? Как я буду настраивать эту штуку? Любые указатели будут оценены.
Как кодировать оптимистическую и пессимистическую блокировку из кода Java
comment
Блокировка Java и JDBC не связаны так, как вы ищете. Какую проблему вы пытаетесь решить? Блокировки Java — это блокировки с повторным входом, которые можно получить с помощью ключевого слова «синхронизированный». Итак, что именно вы ищете?
- person Pavan   schedule 01.01.2012
comment
я ищу блокировку базы данных
- person user2434   schedule 01.01.2012
Ответы (2)
Вы можете реализовать оптимистичные блокировки в своей таблице БД следующим образом (вот как оптимистическая блокировка выполняется в Hibernate):
- Добавьте целочисленный столбец «версия» в вашу таблицу.
- Увеличивайте значение этого столбца при каждом обновлении соответствующей строки.
- Чтобы получить блокировку, просто прочитайте значение «версия» строки.
- Добавьте условие «версия = полученная_версия» в предложение where вашего оператора обновления. Проверьте количество затронутых строк после обновления. Если ни одна строка не была затронута, значит кто-то уже изменил вашу запись.
Ваше обновление должно выглядеть так
UPDATE mytable SET name = 'Andy', version = 3 WHERE id = 1 and version = 2
Конечно, этот механизм работает только в том случае, если все стороны следуют ему, в отличие от блокировок, предоставляемых СУБД, которые не требуют специальной обработки.
Надеюсь это поможет.
person
Andrei Petrenko
schedule
16.01.2012
Предположим, я использую Oracle с Java, есть ли у меня какие-либо методы в JDBC, которые помогут мне в этом?
В этом документе Oracle вы найдете несколько советов о том, как это сделать.
Конкретных методов JDBC не существует. Скорее, вы достигаете оптимистичной блокировки тем, как вы разрабатываете свои SQL-запросы/обновления и устанавливаете границы транзакций.
person
Stephen C
schedule
01.01.2012