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

Презентация:



Advertisements
Похожие презентации
Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Advertisements

Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от
Расширенные темы 1. SQL запросы Язык JPQL является абстракцией и «общим знаменателем» всех SQL диалектов. Очевидно, что конкретный диалект обладает бОльшими.
Д. Дуброво д. Бортниково с. Никульское д. Подлужье д. Бакунино пос. Радужный - Песчаный карьер ООО ССП «Черкизово» - Граница сельского поселения - Граница.
Приложение 1 к решению Совета депутатов города Новосибирска от Масштаб 1 : 5000.
Проектирование архитектуры ИСО 1. UML 2 Структура определения языка 4.
Работа учащегося 7Б класса Толгского Андрея. Каждое натуральное число, больше единицы, делится, по крайней мере, на два числа: на 1 и на само себя. Если.
Урок 2. Информационные процессы в обществе и природе.
Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______ Масштаб 1 : 5000.
Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 4500 к решению Совета депутатов города Новосибирска от
Ул.Школьная Схема с. Вознесенка Ярославского городского поселения п.Ярославский 10 2 Ул.Флюоритовая
ЦИФРЫ ОДИН 11 ДВА 2 ТРИ 3 ЧЕТЫРЕ 4 ПЯТЬ 5 ШЕСТЬ 6.
Применение генетических алгоритмов для генерации числовых последовательностей, описывающих движение, на примере шага вперед человекоподобного робота Ю.К.
Матемтааки ЕТ СТ 2 класс Шипилова Наталия Викторовна учитель начальных классов, ВКК Шипилова Наталия Викторовна учитель начальных классов, ВКК.
Таблица умножения на 8. Разработан: Бычкуновой О.В. г.Красноярск год.

Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
27 апреля группадисциплина% ДЕ 1МП-12Английский язык57 2МП-34Экономика92 3МП-39Психология и педагогика55 4МП-39Электротехника и электроника82 5П-21Информатика.
Результаты работы 5а класса Кл. руководитель: Белобородова Н. С. Показатель 0123 Обучаемость 1-6%4-25%8-50%3-18 Навыки смыслового чтения 1-6%12-75%3-18%
ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ МЕДИЦИНСКИЙ ИНСТИТУТ Хромушин В.А., д.б.н., к.т.н., академик МАИ и АМТН 2010 г. ГРАФИЧЕСКОЕ ОТОБРАЖЕНИЕ РЕЗУЛЬТИРУЮЩИХ.
Транксрипт:

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

Java Persistence API Место JPA 2-2

Java Persistence API Автоматическое отслеживание статуса сущности и его сохранение Простота конфигурации Унифицированный интерфейс Свобода от закрытых решений Цели JPA 2-3

Java Persistence API EJB 3 Persistence Слой объектно-реляционного преобразования JSR-220 Направлен на использование реляционных БД Простой API Мощный язык запросов Что такое JPA? 2-4

Java Persistence API Имеет имя Имя может быть пустым, если в приложении только один модуль Ассоциируется с: Набором классов сущностей БД для хранения информации Единая конфигурация Единый набор метаданных Что такое Модуль JPA Persistence? 2-5

Java Persistence API JPA отслеживает управляемые (managed) сущности Их изменения фиксируются в БД при завершении транзакции JPA загружает поля и связи управляемых объектов по запросу приложения Отсоединенные и вновь созданные сущности не являются managed Что такое управляемые сущности? 2-6

Java Persistence API Набор управляемых объектов в одном Persistence-модуле Каждый EntityManager связан c одним PersistenceContext 'ом PersistenceContext может быть связан с несколькими EntityManager 'ами Что такое PersistenceContext? 2-7

Java Persistence API PersistenceContextType.TRANSACTIONAL PersistenceContextType.EXTENDED По умолчанию в J2SE В Java EE 5 Для компонентов с управляемыми транзакциями по умолчанию TRANSACTIONAL Для остальных по умолчанию - EXTENDED У PersistenceContext есть диапазон 2-8

Java Persistence API Managed сущности при фиксации транзакции отсоединяются Загруженные сущности Становятся managed только если транзакция активна Сущности не могут быть изменены вне транзакции Иначе возникает TransactionRequiredException PersistenceContext с TRANSACTIONAL диапазоном 2-9

Java Persistence API Managed сущности при фиксации транзакции остаются managed Загруженные сущности managed независимо от транзакций Сущности могут быть изменены вне транзакции Изменения сохраняются если позже транзакция начата и зафиксирована PersistenceContext с EXTENDED диапазоном 2-10

Java Persistence API EntityManager JPA 2-11

Java Persistence API Расширение байт-кода Разработка POJO-сущности Определение хранимых полей с помощью метаданных Компиляция Расширение байт-кода Как EntityManager отслеживает изменения статуса? 2-12

Java Persistence API Параметры аннотации: unitName имя JPA модуля type : PersistenceContextType.TRANSACTIONA L PersistenceContextType.EXTENDED EntityManager в EJB public class ServiceBean implements Service EntityManager em;... }

Java Persistence API boolean isOpen() IllegalStateException если EM получен с помощью Injection IllegalStateException если транзакция активна После закрытия все методы вызывают IllegalStateException void close() Методы жизненного цикла в интерфейсе EntityManager 2-14

Java Persistence API void persist(Object entity) Делает вновь созданную сущность управляемой Данные сохраняются при фиксации транзакции void remove(Object entity) Помечает сущность к удалению Удаление происходит при фиксации транзакции Интерфейс EntityManager 2-15

Java Persistence API void refresh(Object entity) Обновляет данные в сущности Перезаписывает все изменения T find(Class entityClass, Object key) Может вернуть null Предпочтительнее, чем getReference T getReference(Class entityClass, Object key) Не возвращает null Интерфейс EntityManager 2-16

Java Persistence API Содержит два метода для получения EntityManagerFactory puName имя Persistence модуля Может быть пустым Опция Map позволяет задавать специфичные параметры Утилитный класс Persistence в JPA 2-17

Java Persistence API Содержит два метода для получения EntityManager createEntityManager() createEntityManager(Map map) Содержит два метода жизненного цикла boolean isOpen() void close() Интерфейс EntityManagerFactory 2-18

Java Persistence API EntityManagerFactory 2-19

Java Persistence API Получить запрос пользователя Решить, стоит ли открывать контекст транзакции Найти хранимые объекты Изменить хранимые объекты Принять решение о фиксации/ отмене/продолжении транзакции Повтор Типовой жизненный цикл приложения, использующего БД 2-20

Java Persistence API Модель должна знать, как: Найти хранимые объекты Изменить хранимые объекты Обработать транзакции Следить за целостностью Модель не должна знать об остальном приложении Приложение обращается к модели Дизайн Model в архитектуре MVC как сервиса для приложения 2-21

Java Persistence API Архитектура MVC-приложения 2-22

Java Persistence API Сервис в модели предоставляет: Поиск Обработку сохранения Может быть несколько сервисов Решения об использовании объектов модели вне модели detached или управляемые сущности Решения о контроле транзакций 2-23 Архитектура MVC-приложения

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

Сущности (Entities) Должны быть top-level классами Не могут быть final Не могут иметь final поля или методы Должны иметь public или protected конструктор без аргументов Требования к хранимым классам 2-25

Сущности (Entities) Должны иметь объявленный первичный ключ Могут быть абстрактными и конкретными Должны идентифицироваться в метаданных мапинга Хранимые поля должны быть поддерживаемых типов Требования к хранимым классам 2-26

Сущности (Entities) Информация, необходимая JPA- имплементации для обеспечения взаимодействия объектной модели и БД Имя таблицы в БД Первичные ключи Каскадирование для связей Стратегия и поля версий И т.д. Что такое метаданные мапинга? 2-27

Сущности (Entities) Аннотации JPA Наш курс использует только аннотации XML-файлы (ORM-файлы) Настройки, указаннае в файлах, более приоритетны, чем соответствующие аннотации Определение метаданных мапинга 2-28

Сущности (Entities) Используйте аннотацию Entity Могут наследоваться от Mapped Superclass Других классов сущностей Нехранимых классов Поля нехранимых классов никогда не сохраняются Классы сущностей 2-29

Сущности (Entities) Доступ к свойствам С помощью JavaBean-методов Доступ к полям Один тип доступа применяется ко всей иерархии сущностей Определяется Положением первой аннотации Значением тэга в метаданных Два типа доступа в JPA 2-30

Сущности (Entities) Свойства должны иметь методы get и set Методы свойств должны быть public или protected Аннотируется только метод get JPA-имплементация будет использовать эти методы Бизнес-логика в аксессорах может привести к побочным эффектам Требования для доступа к свойствам 2-31

Сущности (Entities) Поля должны быть public, package или protected Аннотируются поля JPA-имплементация обеспечивает доступ к этим полям Рекомендуется использовать доступ к полям Требования для доступа к полям 2-32

Сущности (Entities) Однозначно идентифицирует состояние сущности в БД Может состоять из одного или нескольких полей Ссылки на другие сущности не могут быть ключами Должен быть определен для старшего класса иерархии Идентификатор (ключ) сущности 2-33

Сущности (Entities) По умолчанию ключ должен определяться Параметры: strategy GenerationType AUTO по умолчанию TABLE, SEQUENCE, IDENTITY generator Аннотации простого ключа 2-34

Сущности (Entities) Использует определенный в приложении класс ключа public -класс верхнего уровня или public static вложенный класс Реализует Serializable public конструктор по умолчанию Методы hashCode и equals используют ключевые поля Составные ключи 2-35

Сущности (Entities) Аннотирование класса ключа и его полей Аннотирование поля встроенного ключа Аннотации составных ключей 2-36

Сущности (Entities) Значения хранимых полей сохраняются в БД Два типа хранимых полей: Простые (поля-значения) Отношения (связи) transient поля не могут быть хранимыми Остальные поля хранимы по умолчанию Хранимые поля 2-37

Сущности (Entities) Примитивные типы и их обертки java.lang.String java.math.BigInteger/BigDecimal java.util.Date/Calendar java.sql.Date/Time/Timestamp Массивы Byte, Byte, char, Char Перечисления Любой Serializable класс Типы простых полей 2-38

Сущности (Entities) Опциональна, но рекомендуется для определения типа доступа Два параметра: fetch FetchType.EAGER (по умолчанию) FetchType.LAZY optional true (по умолчанию для непримитивов) false (по умолчанию для примитивов) Аннотации простых полей 2-39

Сущности (Entities) Дополняет Применяется к полям типа java.util.Date/Calendar Возможные значения: TemporalType.DATE TemporalType.TIME TemporalType.TIMESTAMP 2-40

Сущности (Entities) Дополняет Применяется к полям-перечислениям Возможные значения: EnumType.ORDINAL EnumType.STRING 2-41

Сущности (Entities) Экземпляры хранимых классов Отсоединены от EntityManagerа После отсоединения, EM не загружает поля «по запросу» Изменения непосредственно не отображаются в БД Могут быть изменены вне активной транзакции Что такое отсоединенные сущности? 2-42

Сущности (Entities) Отсоединение происходит, когда: Закрывается EM У EM вызывается метод clear() Сущность проходит через сериализацию Транзакция откатывается При откате активной транзакции вызывается метод clear() Создание отсоединенных сущностей 2-43

Сущности (Entities) В транзакционном контексте отсоединение происходит: При выполнении запроса вне транзакции После фиксации транзакции Если объект изменен, предполагается, что изменения будут зафиксированы Поле версии соответствует ожидаемому после фиксации Создание отсоединенных сущностей 2-44

Сущности (Entities) Метод интерфейса EntityManager contains Определяет, является ли сущность управляемой Проверка на отсоединенность 2-45

Сущности (Entities) Загруженными остаются поля, загруженные у управляемой сущности Загруженные связи сохраняются Создается граф отсоединенных объектов Загружаются: Поля с ранней загрузкой (по умолчанию) и поля с поздней загрузкой, уже запрошенные приложением и загруженные Поля, загруженные при join Загрузка полей при отсоединении 2-46

Сущности (Entities) Отсоединенные сущности могут быть объединены с текущим контекстом EM Копирует измененные поля в управляемую сущность Если сущность новая, то создается новый управляемый экземпляр Объединение (merging) 2-47

Сущности (Entities) Связи обрабатываются рекурсивно, если Выставлен атрибут cascade=CascadeType.MERGE И связь загружена в отсоединенный объект Изменения в результате объединения сохраняются при фиксации транзакции Объединение (merging) 2-48

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

Транзакции в JPA БД может выполнять несколько транзакций одновременно Каждая транзакция может включать несколько шагов Свойства транзакции: Atomicity атомарность Consistency надежность Isolation изоляция Durability долговечность ACID - свойства транзакции 2-50

Транзакции в JPA Целостность обновления Изменения не могут быть зафиксированы, если изменяемые данные устарели Надежность чтения Все данные, считанные в течение транзакции, не устарели к моменту фиксации изменений Транзакционные характеристики 2-51

Транзакции в JPA Пессимистичные блокировки Реализация уровня изоляции повторных чтений Оптимистичные проверки модифицируемых объектов Изоляция на основе упорядочивания Целостность обновления 2-52

Транзакции в JPA Пессимистичные блокировки Оптимистичные проверки читаемых объектов Реализация изоляции на основе упорядочивания Надежность чтения 2-53

Транзакции в JPA Клиент получает эксклюзивное право на чтение записи Уменьшает максимально допустимое количество обращений Deadlock возможен, его избежание забота разработчика Не определены в JPA Пессимистичные блокировки 2-54

Транзакции в JPA Имплицитно выполняются JPA на изменяемых объектах Необходимо поле версии ) При изменении проверяется версия Несоответствие версии ведет к откату транзакции Из-за отсутствия блокировок возможно максимальное количество обращений Оптимистичные проверки 2-55

Транзакции в JPA int, short, long, Integer, Long, Short, java.sql.Timestamp Поле не должно изменяться приложением Без поля версии, пересекающиеся изменения не распознаются 2-56

Транзакции в JPA Некоторые приложения могут декомпозировать сущности Web-приложения посылают клиенту атрибуты Приложение может производить самостоятельный контроль версий и посылать клиенту исключения Проверки в приложении 2-57

Транзакции в JPA EntityManager предоставляет метод lock public void lock(Object entity, LockModeType mode) Сущность должна быть управляемой Транзакция должна быть активна Явные блокировки в JPA 2-58

Транзакции в JPA Метод lock с LockTypeMode.READ Две транзакции, запрашивающие блокировку на чтение на одну и ту же сущность, успешны, если: Ни одна не изменяет сущность Или реализация заставляет транзакцию сериализоваться Для успешных транзакций чтение при использовании блокировки на чтение целостно Блокировки на чтение 2-59

Транзакции в JPA Метод lock с LockTypeMode.WRITE Приводит к запросу блокировки в БД или проверке версии при фиксации изменений Требует изменения версии сущности Две транзакции, запрашивающие блокировку на чтение на одну и ту же сущность, успешны, если: Реализация требует сериализации транзакции Блокировки на запись 2-60

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

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

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

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

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

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

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

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

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

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

Иерархия классов и JPA Преимущества Наиболее нормализованные таблицы Нет проблем с ограничениями (constraints) на столбцах Модель данных легко расширяема Недостатки Чтение приводит к объединению или нескольким запросам Вставка и обновление затрагивают несколько таблиц Особенности объединения таблиц 2-71

Иерархия классов и JPA Отличный выбор, когда Иерархия не слишком глубока Необходимые объединения при чтении не приводят к потере производительности Не много обновлений данных Данные распределены по иерархии Не рекомендуется, если Множество классов в иерархии добавляет лишь поведенческие особенности 2-72 Использование объединения таблиц

Иерархия классов и JPA Определяет столбец-дискриминатор При хранении информации о нескольких классах в одной таблице, необходимо средство их дискриминации Реализация создает столбец при необходимости 2-73

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

Иерархия классов и JPA Исправляет недостатки двух предыдущих стратегий Разделяет данные в несколько таблиц Позволяет избежать объединений при операциях с известным типом Наиболее быстрый вариант при операциях с определенным типом Затрагивается одна таблица Меньше строк и столбцов для получения Преимущества таблицы на класс 2-75

Иерархия классов и JPA Значительные ограничения на полиморфные отношения Например: Получение Set em.find(Person.class, id) Приводят к многочисленным запросам или одному запросу с множеством объединений Недостатки таблицы на класс 2-76

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

Связи в JPA Количество элементов Один-к-одному Один-ко-многим Много-ко-многим Зависимость Ассоциация Композиция Направление Однонаправленные Двунаправленные Свойства связей 2-78

Связи в JPA В SQL все связи двунаправленные В Java все связи однонаправленные Двунаправленные связи в Java моделируются двумя однонаправленными Две ссылки в памяти моделируют одно значение в реляционной БД Приложение должно управлять двунаправленными связями в Java Двунаправленные связи 2-79

Связи в JPA Свойство Cascade Определяет действия менеджера сущностей по отношению к связанным сущностям CascadeType enum PERSIST REMOVE, REFRESH, MERGE, ALL Каскадирование в JPA по умолчанию отключено Каскадирование в JPA 2-80

Связи в JPA Fetch определяет при выборке сущности действия со связанными сущностями FetchType enum EAGER Связанная сущность загружается вместе со связывающей По умолчанию для «к-одному» связей Выборка (fetch) в JPA 2-81

Связи в JPA LAZY Связанная сущность загружается при первом использовании в приложении По умолчанию для «ко-многим» связей «Совет» JPA-механизму, который может по своему усмотрению использовать «раннюю» выборку Выборка (fetch) в JPA 2-82

Связи в JPA Интерфейсы из java.util : Collection Set List Map Коллекции должны быть коллекциями сущностей Map'ы должны иметь примитивные ключи и значения-сущности Поддерживаемые типы связей в JPA 2-83

Связи в JPA Списки не сортируются имплицитно Для указания сортировки используется JPA использует сортировку только при выборке Сортировка списков в JPA 2-84

Связи в JPA Четыре стандартных аннотации связей 2-85

Связи в JPA Атрибут fetch Значение по умолчанию зависит от типа отношений Атрибуты аннотаций связей 2-86 Атрибут cascade По умолчанию отсутствие каскадирования

Связи в JPA Один-к-одному 2-87 Все «к-одному» отношения имеют атрибут optional По умолчанию true Если связь двунаправленная, одна из сторон владелец Вторая сторона использует атрибут mappedBy

Связи в JPA Один-к-одному 2-88 Все «к-одному» отношения имеют значение атрибута fetch по умолчанию EAGER Переопределение: Столбец вторичного ключа имеет ограничение на уникальность

Связи в JPA Много-к-одному 2-89 Всегда владелец какой-либо двунаправленной связи Значение атрибута fetch по умолчанию EAGER Вторичный ключ не имеет ограничения на уникальность

Связи в JPA Один-ко-многим 2-90 Значение атрибута fetch по умолчанию для всех «ко-многим» связей LAZY В случае двунаправленных связей используется атрибут mappedBy

Связи в JPA Много-ко-многим 2-91 Значение атрибута fetch по умолчанию LAZY Всегда моделируются соединением таблиц В случае двунаправленной связи используется mappedBy

Связи в JPA Много-ко-многим 2-92 Значение атрибута fetch по умолчанию LAZY Всегда моделируются соединением таблиц В случае двунаправленной связи используется mappedBy

Связи в JPA Map в JPA 2-93 Один-ко-многим или много-ко- многим Ключ всегда является одним из полей сущности-значения

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

EJB-QL Запросы 2-95 Имя сущности простое имя класса Ключевые слова не чувствительны к регистру, имена сущностей, полей и параметры - чувствительны

EJB-QL Создание запросов 2-96 Запросы создаются фабричными методами EntityManager 'а Фильтры для именованных запросов определяются в метаданных

EJB-QL Синтаксис оператора select 2-97 Общий синтаксис: select [distinct] [ ] from [where ] [ group by ] [ having ] [ order by ] Синтаксис близок к SQL

EJB-QL Типы выборки 2-98 Выборка сущностей: Выборка агрегатных значений: Выборка проекций: Выборка пользовательских классов

EJB-QL Использование Dot-нотации 2-99 Примеры использования: Если при вычислении логического выражения появляется null, выражение принимает значение false

EJB-QL Использование объединений Пример использования: Необходимо использовать ключевое слово distinct Inner join (join) Left join (left outer join)

EJB-QL Условные выражения Сравнение >, =, like is [not] null is [not] empty in {ALL|SOME|ANY} (подзапрос)

EJB-QL Логические операторы Три стандартных оператора для комбинирования условий and or not

EJB-QL Параметры Параметры именуются в запросе с помощью: Имени: :bName, :x... Позиции: ?1, ?2... Параметры выставляются до выполнения запроса: setParameter(String name,Object val) setParameter(int pos, Object val)

EJB-QL Выборка при объединении В запросе можно указать тип «ранней» выборки с помощью fetch для «ко-многим» связей Нельзя обращаться к выбираемой сущности в запросе

EJB-QL Ограничение количества выборки Два метода класса Query : setFirstResult(int startPos) Нумерация с 0 setMaxResults(int limit)

EJB-QL Выполнение запросов Два метода для выборки: List getResultList() Object getSingleResult() EntityNotFoundException NonUniqueResultException Один метод для обновления: int executeUpdate() Возвращает количество измененных записей

EJB-QL Массовые операции Обновление Обновляет поле версии (если есть) Удаление Не требует загрузки объектов Массовые изменения не затрагивают управляемых объектов в текущем контексте любого менеджера

EJB-QL Именованные запросы Именованные запросы могут определяться в аннотациях Так же могут определяться в конфигурационном файле createNamedQuery(String name)

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

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

Обработчики Обработчики жизненного цикла сущности PrePersist PostPersist PreRemove PostRemove PreUpdate PostUpdate PostLoad Виды обработчиков 2-111

Обработчики Вынесение логики обработчиков в отдельный класс и Использование аннотаций обработчиков жизненного цикла в классе сущности Определение обработчиков 2-112

Обработчики Предотвращение вызова обработчиков Предотвращение вызова обработчиков по Управление обработчиками 2-113

Практика Разработка обработчиков. Упражнение 2-114

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