| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Hibernate, JDBC - блокировка записи |
| Автор: lunix 18.7.2007, 12:22 |
| При изучении хибернейта у меня возник вопрос. Хибернейт делает обновление в базу данных в конце транзакции, чтобы избежать блокировки? Рассмотрим работу с JDBC. Уровени изоляции транзакций read-commited. 1) Устанавливаем auto commit = false. 2) Начинаем транзакцию 3) Делаем обновление записи базы данных. Вопрос: устанавливается ли на запись блокировка до конца текущей транзакции?(тогда другие траназакции, использующие данную запись будут блокированы). Или вообще блокировка не устанавливается, а просто сохраняется измененная запись данной строчки(не в базу) до завершения транзакции, а другие транзакции не блокируются и видят старую запись? |
| Автор: AntonSaburov 18.7.2007, 12:38 |
| Это может зависеть от базы данных. Например IntarBase или Orcale - версионные и они не блокируют запись. А тот же MS SQL - блокирует. |
| Автор: lunix 18.7.2007, 13:01 |
| Почитал Тома Кайта(гуру оракла): в оракле осуществляется блокировка на запись, а другие транзакции при чтении берут данные из сегмента отката. На запись всегда осуществляется блокировка, а на чтение видимо зависит от базы. |