Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> уровень изоляции транзакций и Hibernate, уровень изоляции транзакций и Hibernate 
:(
    Опции темы
rdmrdm
Дата 8.3.2012, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 8.3.2012

Репутация: нет
Всего: нет



Первый вопрос. Какая связь существует между уровнем изоляции транзакций, параметрами JPA Lock.READ / Lock.WRITE и версиями @Version(Оптимистическая блокировка). Я более менее понял по отдельности каждую из этих 3 разделов, но не понимаю, как они связаны между собой. Выбранный уровень изоляции транзакций дает некие «гарантии» при проведении операций с таблицами. Параметры Lock.READ/Lock.WRITE позволяют добиться блокировки полей таблицы при проведении операций. Если я правильно понял для этого как раз и используются поле @Version. Но все таки не до конца улавливаю связь между эти тремя понятиями. Или они дополняют друг друга, или это разные способы решения одних и тех же проблем. В общем, буду очень благодарен за ответ или же ссылку где можно прочесть информацию именно по вопросы связи между этими понятиями и их совместном использовании.

Второй вопрос. Каким способом в Hibernate можно указать требуемый уровень изоляции транзакции для конкретной транзакции. И принято ли так делать.

Спасибо.
PM MAIL   Вверх
Zloxa
Дата 13.3.2012, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: нет
Всего: 161



Я попытаюсь дать вам ответ вне контекста JPA и хибернейт, ибо, как мне кажется, тут можно подняться на более высокий уровень абстракции. Заранее прошу прощения, если мой ответ окажется не в дугу.

Уровень изоляции транзакций определяет степень согласованности чтений в многопользовательской среде. Дважды запросив одну и ту же ифномрацию, по одним и тем же критериям, можно получить различные результаты, т.к. данные могли быть изменены другой сессией. Степень независимости запрашиваемых данных от модификаций, производимых в параллельных сессиях и определяют уровни изоляции транзакций. Один из способов обеспечения этой изоляции являются блокировки. В этом случае, при самом высоком уровне изоляции(serialized), будучи единожды прочитанными, данные блокируются для модификации другими сессиями, до окончания читающей транзакции.

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

Пытаюсь изобразить на примере:
Пессимистическая стратегия блокирования:
1) открываем транзакцию с высоким уровнем изоляции
2) Читаем исходные данные с блокированием. Теперь ни одна тварь не сможет их изменить.
3) Много тупим
4) Получаем результат
5) Сохраняем результат
6) фиксируем транзакцию, отпускаем блокировки

Оптимистическая стратегия блокирования:
1)  Читаем исходные данные:
  • открываем транзакцию с низким уровнем изоляции
  • читаем исходные данные без блокирования либо же с минимально необходимым
  • закрываем транзакцию
2) много тупим
3) получаем результат
4) сохраняем результат:
  •  открываем транзакцию с высоким уровнем изоляции
  •  повторно читаем исхдоные данные, но уже с блокированием
  •  анализируем, соответствуют ли версия повторно считанных данных исходной версии, если не соответствуют - кричим караул, прекращаем операцию, откатываем транзакцию
  •  сохраняем результат
  •  фиксируем транзакцию, отпускаем блокировки
Получается для реализации стратегии блокирования могут быть использованы различные уровни изоляции, которые, в свою очередь обеспечивают блокирование ресурсов. В то же время ни что вроде как не мешает самостоятельно управлять блокированием ресурсов при реализации этой стратегии


Это сообщение отредактировал(а) Zloxa - 13.3.2012, 15:38


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
rdmrdm
Дата 13.3.2012, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 8.3.2012

Репутация: нет
Всего: нет



Спасибо за ваш ответ. Время от времени мне кажется, что я понимаю эти вещи)
Вообще мне кажется полезным, если бы кто-то из людей с опытом написал пример, в которым были бы продемонстрированы разные варианты, в т.ч. при одновременных транзакциях. Например какое-нибудь приложение GUI с выборов вариантом уровня изоляции, блокировок и просмотром результата работы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1028 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.