Hibernate оптимистическая блокировка .. как это работает? - PullRequest
8 голосов
/ 28 июля 2010

Я читал в блоге ниже о гибернации оптимистической блокировки. Я планирую использовать его в спящем режиме. Но у меня есть одна проблема. у нас есть код Java и код C ++, оба подключаются к одной базе данных. В то время как Java-код может использовать hibernate для достижения оптимистической блокировки, я хочу, чтобы код c ++ делал то же самое. Кроме того, код C ++ использует некоторый устаревший код.

http://turgaykivrak.wordpress.com/2009/05/16/72/

Существует ли документация, объясняющая, как в hibernate достигается оптимистическая блокировка?

Любые предложения приветствуются.

Спасибо
Bala

1 Ответ

11 голосов
/ 28 июля 2010

Если быть точным, вы имеете в виду не оптимистическую блокировку, а оптимистический параллелизм (без блокировки). Использование метки времени для версии просто для поддержки устаревшей базы данных, потому что современная база данных может (по крайней мере теоретически) работать быстрее, чем точность хранения метки времени.

Использовать свойство целочисленной версии очень просто:

  • На вставке: установите версию на 1
  • При обновлении и удалении: увеличьте версию на 1 и добавьте «где версия = @ версия» для каждого sql statementent. Вернуть количество измененных записей. Бросьте исключение StaleObjectStateException, если количество измененных записей отличается от ожидаемого.

Лично я не стал бы создавать два отдельных приложения, записывающих одни и те же данные в нестандартной ситуации, потому что это означает, что бизнес-логика должна дублироваться и изменения должны применяться к двум приложениям, в том числе, когда изменение относится к только одно из приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...