Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java / лекции / лекция 17.ppt
Скачиваний:
106
Добавлен:
17.04.2018
Размер:
152.06 Кб
Скачать

Освобождение точки сохранений

Вызов conn.releaseSavepoint(savepoint) убирает точку сохранения из транзакции

Возврат к освобожденной точке сохранения вызовет исключение SQLException

Возврат к точке сохранения автоматически освободит все точки сохранения, созданные после неё.

Ситуации с параллельным использованием БД

«Неподтвержденное чтение» - когда транзакция A видит данные, добавленные/измененные транзакцией Б, но не был вызван commit

Повторенные чтения — когда в процессе чтения данных транзакцией А, транзакция Б обновляет её. Транзакция А прочитает измененную строку дважды, с изменениями, сделанными Б.

Фантомы — когда в процессе вычитывания транзакцией А данных, транзакция А или Б добавляет/изменяет строку, чтобы она попала под условия выборки в транзакции А. Когда транзакция А повторно выберет данные, у нее появится лишняя строка.

Уровни изоляций транзакций

Уровень

Неподтвержден-

Повторные

Фантомы

 

ное чтение

чтения

 

TRANSACTION_READ_COMMITTED

Запрещено

допускается

допускается

TRANSACTION_READ_UNCOMMITTE

допускается

допускается

допускается

D

 

 

 

TRANSACTION_REPEATABLE_READ

Запрещено

Запрещено

допускается

TRANSACTION_SERIALIZABLE

Запрещено

Запрещено

Запрещено

conn.setTransactionIsolation(int level) int conn.getTransactionIsolation()

Использование большого количества данных

Типы BLOB, CLOB и NCLOB позволяют хранить потенциально большие данные.

Clob myClob = conn.createClob();

Writer clobWriter = myClob.setCharacterStream(1); clobWriter.write(...); // и т.д.

...

pstmt.setClob(2, myClob);

Чтение из CLOB

Clob resClob = rs.getClob(2);

Reader clobReader = resClob.getCharacterInputStream();

Соседние файлы в папке лекции