
jpa
.pdf
Исключения
OptimisticLockException
◦Возникает в методах merge или flush
◦Помечает транзакцию к откату
◦Может возникнуть в методе commit
RollbackException
◦Возникает при неудаче метода commit,
если происходит откат транзакции
2-61

Упражнение
Разработка сохраняемых простых сущностей с использованием транзакционных механизмов.
2-62

Java Persistence API
Сущности (Entities)
Транзакции в JPA
Иерархия классов и JPA
Связи в JPA
EJB-QL
Обработчики (Listeners)
2-63

Классы в иерархии сущностей
Классы, не являющиеся
сущностями, могут присутствовать в иерархии
◦Хорошая практика делать их абстрактными
Классы сущностей могут быть
абстрактными и конкретными
2-64

Стратегии маппинга наследования
Mapped Superclass
Единая таблица
Объединение таблиц
Таблица на класс
2-65

Mapped Superclass
Аннотация класса без параметров
MappedSuperclass не отображается на отдельную таблицу
Не может участвовать в запросах, в отношениях
Может быть только на самом верху иерархии
2-66

Аннотация наследования
Определяет одну из трех стратегий:
◦Единая таблица (SINGLE_TABLE)
◦Объединение таблиц (JOINED)
◦Таблица на класс (TABLE_PER_CLASS)
Используется на старшем классе в иерархии (не MappedSuperclass)
2-67

Стратегия единой таблицы
Все классы хранятся в
одной таблице
Быстрая, простая модель
◦Хорошо протестирована
Использует столбец-
дискриминатор
2-68

Использование единой таблицы
Отличный выбор, когда
◦Данные сосредоточены в верхних классах иерархии
◦Поведение — в нижних
Не рекомендуется, если данные распределены в большой иерархии
◦Таблица с множеством столбцов
◦Большинство столбцов nullable
◦Невозможно применение простых
ограничений (constraints)
2-69

Стратегия объединения таблиц
Каждый класс хранится в своей таблице
◦Абстрактные классы тоже
отображаются
Использует столбец-
дискриминатор
2-70