Поддерживает ли hibernate оптимистичную блокировку с явной концепцией версии для SQL-запросов SQL?Hibernate оптимистичная блокировка для SQL-запросов SQL
ответ
Да. Вы можете построить собственный SQL-запрос, получив экземпляр SQLQuery
из сеанса. Используйте addEntity
, чтобы сообщить hibernate тип объекта, возвращаемого запросом. Hibernate будет правильно управлять экземплярами объектов, которые возвращаются.
Другой аспект, который вам нужно знать, - это кеширование. Hibernate не понимает собственный запрос, поэтому он не знает, к каким таблицам обращаются. Это означает, что спящий режим не может автоматически очистить кеши, чтобы убедиться, что запрос видит текущее состояние базы данных. Это приводит к неправильным результатам, которые могут быть тонкими и трудно идентифицируемыми.
Исправление проблемы кэширования/промывки состоит в том, чтобы указать экземпляр SQLQuery
, к которому обращаются типы сущностей. Используйте методы addSynchronized*
, чтобы сообщить, что происходит в спящем режиме, что происходит в запросе, а спящий режим будет выполнять всю тяжелую работу.
- 1. Hibernate оптимистичная блокировка..хорошо работает?
- 2. Hibernate LAZY Fetch VS Оптимистичная блокировка версии
- 3. jdbctemplate и оптимистичная блокировка
- 4. Hibernate оптимистичная блокировка и внешние программы
- 5. Hibernate оптимистичная блокировка для удаления и вставки запросов
- 6. оптимистичная блокировка управления кредитами пользователя
- 7. О версии Morphia (оптимистичная блокировка)
- 8. Данные весны Neo4j - Оптимистичная блокировка
- 9. Hibernate оптимистичная блокировка с использованием версии не работает
- 10. play 2.4 ebean update оптимистичная блокировка
- 11. Замок ActiveRecord оптимистичная блокировка по свойствам
- 12. Marklogic Оптимистичная блокировка с использованием XCC API
- 13. p: dataTable и оптимистичная блокировка в JPA
- 14. Rails оптимистичная блокировка ручная блокировка проверка: любые проблемы?
- 15. grails 2.4.2 оптимистичная блокировка, похоже, не работает
- 16. REST оптимистичная блокировка и множественные PUT
- 17. рубин на рельсах + оптимистичная блокировка + best_in_place
- 18. Блокировка в Java - Оптимистичная против пессимистических
- 19. JPA оптимистичная блокировка против синхронизированного метода Java
- 20. Оптимистичная блокировка не работает - без увеличения версии, без исключения
- 21. Grails - Оптимистичная блокировка - Время между двумя возможными обновлениями
- 22. Grails/Hibernate: Оптимистическая блокировка контроллера
- 23. Об обновлении объекта с столбцом version_id (Оптимистичная автономная блокировка)
- 24. Как работает «Оптимистичная блокировка» в API Gateway + DynamoDB combo
- 25. Оптимистичная блокировка, не работающая с данными весны couchbase @version
- 26. Оптимистичная или пессимистическая блокировка в аукционном/банковском приложении (Rails/MySQL)
- 27. Оптимистичная блокировка в коллекциях без столбца версии в базе данных
- 28. Hibernate: блокировка стола с выбором?
- 29. Hibernate Оптимистическая блокировка метод
- 30. Hibernate Оптимистическая блокировка Exception
Query deleteQuery = session.createQuery ("УДАЛИТЬ ОТ XYZ WHERE COL =: value"); В этом случае, как hibernate проверяет VERSION перед удалением записей? – Sam
Оптимистическая блокировка не является проблемой для этого запроса. Информация о версии используется для обеспечения того, чтобы при обновлении, которое никто еще не обновлял строку, тем временем. Вам все еще нужно сообщить hibernate, что вы что-то сделали для таблицы XYZ, если вы хотите, чтобы кеширование работало правильно. – Rob
Просто установите hibernate.show_sql в true и запустите собственный запрос, вы увидите, обновлено ли поле версии или нет. – awahaani