2015-11-27 4 views
1

Я пытаюсь и очень любопытно понять Hibernate. Если два или более пользователя пытаются вставить что-то одновременно в одну и ту же таблицу, используя ту же форму с разных ПК,Спящий режим: обработка нескольких транзакций?

  • Как Hibernate будет управлять этой транзакцией?
  • Какая запись будет сохранена в первую очередь?
  • Применяется ли замок?
  • Как это работает внутри страны?

ответ

0

Hibernate предлагает решение на основе версий (оптимистичный замок).

@Version 

аннотация может быть использована.

Поле сущности может быть просто int или timestamp (с соответствующим столбцом в таблице сущностей). Когда извлекается сущность, читаемая версия. При сохранении версии проверяется, и если она была изменена, спящий режим предотвращает изменение БД.

Read this или this

0

Hibernate может выполнять автоматическое оптимистическое управление параллелизмом для вас. Он может автоматически определять, произошла ли одновременная модификация во время пользовательского времени. Проверьте это в конце разговора, который называется Automatic Versioning. Управление транзакций будет заботиться о них нам не нужно беспокоиться

1

Позволяют назвать пользователь А и В.

Пользователя запрос A был бы обновить БД с помощью операции и в конце этой сделки, изменения (вы можете это изменить, конечно)

Запрос пользователя B также будет выполнен в другой транзакции, и в конце это будет также передано в db.

При фиксации базы данных будет выполняться блокировка для контроля параллелизма, а также зависит от базы данных и конфигурации спящего режима.

  • Оптимистическая блокировка

При использовании оптимистической блокировки, то карта специальный атрибут (номер, отметка о времени) в качестве версии (так что вы на самом деле есть столбец для него). Эта версия считывается при получении объекта и включается в предложение where во время обновления и увеличивается с помощью Hibernate.

  • Пессимистического Запирание

При использовании пессимистичных блокировок, Hibernate блокирует запись для эксклюзивного использования, пока вы не закончите работу с ним

Надеется, что это помогает.

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