Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

jpa

.pdf
Скачиваний:
5
Добавлен:
02.06.2015
Размер:
2.07 Mб
Скачать

Транзакционные характеристики

Целостность обновления

Изменения не могут быть зафиксированы, если изменяемые данные устарели

Надежность чтения

Все данные, считанные в течение транзакции, не устарели к моменту фиксации изменений

2-51

Целостность обновления

Пессимистичные блокировки

Реализация уровня изоляции повторных чтений

Оптимистичные проверки

модифицируемых объектов

Изоляция на основе упорядочивания

2-52

Надежность чтения

Пессимистичные блокировки

Оптимистичные проверки

читаемых объектов

Реализация изоляции на основе упорядочивания

2-53

Пессимистичные блокировки

Клиент получает эксклюзивное право на чтение записи

Уменьшает максимально допустимое количество обращений

Deadlock возможен, его избежание — забота разработчика

Не определены в JPA

2-54

Оптимистичные проверки

Имплицитно выполняются JPA на изменяемых объектах

Необходимо поле версии (@Version)‏

При изменении проверяется версия

Несоответствие версии ведет к откату транзакции

Из-за отсутствия блокировок возможно максимальное количество обращений

2-55

Аннотация @Version

int, short, long, Integer, Long, Short, java.sql.Timestamp

Поле не должно изменяться приложением

Без поля версии, пересекающиеся изменения не распознаются

2-56

Проверки в приложении

Некоторые приложения могут

декомпозировать сущности

Web-приложения посылают клиенту атрибуты

Приложение может производить

самостоятельный контроль

версий и посылать клиенту исключения

2-57

Явные блокировки в JPA

EntityManager предоставляет метод lock

public void lock(Object entity, LockModeType mode)

Сущность должна быть

управляемой

Транзакция должна быть

активна

2-58

Блокировки на чтение

Метод lock с LockTypeMode.READ

Две транзакции, запрашивающие блокировку на чтение на одну и ту же сущность, успешны, если:

Ни одна не изменяет сущность

Или реализация заставляет транзакцию сериализоваться

Для успешных транзакций чтение при использовании блокировки на чтение целостно

2-59

Блокировки на запись

Метод lock с LockTypeMode.WRITE

Приводит к запросу блокировки в БД или проверке версии при фиксации изменений

Требует изменения версии сущности

Две транзакции, запрашивающие блокировку на чтение на одну и ту же сущность, успешны, если:

Реализация требует сериализации транзакции

2-60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]