Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как работает LockModeType.OPTIMISTIC / 7 сообщений из 7, страница 1 из 1
16.02.2018, 15:57
    #39603133
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает LockModeType.OPTIMISTIC
Читаю:
LockModeType.OPTIMISTIC — оптимистичная блокировка на чтение: если при завершении транзакции кто-то извне изменит поле @Version, то транзакция автоматически будет откачена и будет выброшено OptimisticLockException.
Например, использую Spring Data:
Код: java
1.
2.
3.
4.
public User getUserById(long id){
  User user =  userRepository.findById(id);
  return user;
}


Как это работает под капотом? Делается некий select * from ... - получаем user-а с версией v=1. В этот момент кто-то меняется данного юзера и в базе теперь v=2. Выходим из метода getUserById, т.е. завершается транзакция - что происходит в этотм момент? Повторный селект чтобы получить актуальную версию v для сравнения с текущей? И в случае их несовпадения бросается эксепшн? Я правильно поняла? Растолкуйте плииииииз. Спасибо
...
Рейтинг: 0 / 0
16.02.2018, 16:06
    #39603146
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает LockModeType.OPTIMISTIC
JulT,

Обычно, исключение выкидывается при записи в БД, а не при чтении.
То есть, вы вычитали version=1, вы сохраняете изменения. Совпадает с базой? Тогда ок - сохраняем. В базе другая версия? Значит кто-то уже поменял данные и всё что мы наделали не имеет смысла - открываемся нафиг с OptimisticLockException.
...
Рейтинг: 0 / 0
16.02.2018, 16:20
    #39603161
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает LockModeType.OPTIMISTIC
С записью мне все понятно, я не могу понять значение фразы из определения - "оптимистичная блокировка на чтение". При оптимистической я ведь могу читать данные даже если в этот момент какая-то другая транзакция меняет их
...
Рейтинг: 0 / 0
16.02.2018, 16:24
    #39603171
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает LockModeType.OPTIMISTIC
JulT,

Имеется ввиду, что если у вас транзакция только на чтение, то версию менять не стоит.
...
Рейтинг: 0 / 0
16.02.2018, 16:31
    #39603183
JulT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает LockModeType.OPTIMISTIC
BlazkowiczJulT,

Имеется ввиду, что если у вас транзакция только на чтение, то версию менять не стоит.
Благодарю за ответ
...
Рейтинг: 0 / 0
16.02.2018, 16:40
    #39603191
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает LockModeType.OPTIMISTIC
JulT,

А и правда нигде внятного описания нет. JPA такое JEE.
...
Рейтинг: 0 / 0
16.02.2018, 16:49
    #39603200
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает LockModeType.OPTIMISTIC
JulT,
Это значит не ставится другая зло блокировка select(чтение) ....no update
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как работает LockModeType.OPTIMISTIC / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]