Некоторые объекты в моем приложении должны быть заблокированы в рамках определенной транзакции. Мне нужно заблокировать все сущности, которые участвуют в транзакции, и не хотели бы создавать специальные методы для блокировки объектов в моем DAO. Я использую весеннюю декларативную транзакцию и устанавливаю уровень изоляции для этого конкретного вызова метода, но когда данные извлекаются сгенерированным SQL-запросом, это обычный SELECT, а не SELECT XXX FOR UPDATE. Должен ли я вручную указывать блокировку для каждого участвующего объекта в транзакции в спящем режиме? Не следует ли это контролировать из изоляции транзакций? При установке режима блокировки на UPDATE в сеансе гибернации я вижу правильный запрос, означает ли это, что мне нужно вручную указать блокировку, даже если я уже указал выделение.
Лучший
Да. Уровень изоляции и блокировка - это разные вещи, и наверняка блокировки не будут контролироваться из изоляции транзакции. Additionallky, я бы советовал вам не играть с уровнем изоляции, если у вас нет веской причины.
Вы должны использовать пессимистическую блокировку при запросе на применение SELECT... FOR UPDATE для выбранных объектов.
Это поможет вам