jpa
.pdfJava Persistence API
Сущности (Entities)
Транзакции в JPA
Иерархия классов и JPA
Связи в JPA
EJB-QL
Обработчики (Listeners)
2-1
Место JPA
2-2
Цели JPA
Автоматическое отслеживание статуса сущности и его сохранение
Простота конфигурации
Унифицированный интерфейс
Свобода от закрытых решений
2-3
Что такое JPA?
EJB 3 Persistence
Слой объектно-реляционного преобразования
JSR-220
Направлен на использование
реляционных БД
Простой API
Мощный язык запросов
2-4
Что такое Модуль JPA Persistence?
Имеет имя
◦Имя может быть пустым, если в приложении только один модуль
Ассоциируется с:
◦Набором классов сущностей
◦БД для хранения информации
Единая конфигурация
Единый набор метаданных
2-5
Что такое “управляемые сущности”?
JPA отслеживает управляемые
(managed) сущности
◦Их изменения фиксируются в БД при завершении транзакции
JPA загружает поля и связи управляемых объектов по запросу приложения
Отсоединенные и вновь созданные сущности не являются managed
2-6
Что такое PersistenceContext?
Набор управляемых объектов в одном Persistence-модуле
Каждый EntityManager связан c одним PersistenceContext'ом
PersistenceContext может быть связан с несколькими
EntityManager'ами
2-7
У PersistenceContext есть диапазон
PersistenceContextType.TRANSACTIONAL
PersistenceContextType.EXTENDED
◦ По умолчанию в J2SE
В Java EE 5
◦Для компонентов с управляемыми транзакциями по умолчанию —
TRANSACTIONAL
◦ Для остальных по умолчанию -
EXTENDED
2-8
PersistenceContext с TRANSACTIONAL
диапазоном
Managed сущности при фиксации транзакции отсоединяются
Загруженные сущности
◦ Становятся managed только если транзакция активна
Сущности не могут быть изменены вне транзакции
◦ Иначе возникает
TransactionRequiredException
2-9
PersistenceContext с EXTENDED диапазоном
Managed сущности при фиксации транзакции остаются managed
Загруженные сущности managed независимо от транзакций
Сущности могут быть изменены вне транзакции
◦Изменения сохраняются если позже транзакция начата и зафиксирована
2-10