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

jpa

.pdf
Скачиваний:
12
Добавлен:
02.06.2015
Размер:
2 Мб
Скачать
☆

Особенности объединения таблиц

Преимущества

◦Наиболее нормализованные таблицы

◦Нет проблем с ограничениями

(constraints) на столбцах

◦Модель данных легко расширяема

Недостатки

◦Чтение приводит к объединению или

нескольким запросам

◦Вставка и обновление затрагивают

несколько таблиц

2-71

Использование объединения таблиц

Отличный выбор, когда

◦Иерархия не слишком глубока

Необходимые объединения при чтении не приводят к потере производительности

◦Не много обновлений данных

◦Данные распределены по иерархии

Не рекомендуется, если

◦Множество классов в иерархии добавляет лишь поведенческие особенности

2-72

Аннотация @DiscriminatorColumn

Определяет столбец-

дискриминатор

◦При хранении информации о нескольких классах в одной таблице, необходимо средство их

дискриминации

Реализация создает столбец при необходимости

2-73

Стратегия таблицы на класс

Каждый конкретный класс

— в своей таблице

◦Абстрактные классы отображаются на таблицы

наследников

Столбец-дискриминатор

не используется

2-74

Преимущества таблицы на класс

Исправляет недостатки двух предыдущих стратегий

◦Разделяет данные в несколько таблиц

◦Позволяет избежать объединений при операциях с известным типом

Наиболее быстрый вариант при операциях с определенным типом

◦Затрагивается одна таблица

◦Меньше строк и столбцов для получения

2-75

Недостатки таблицы на класс

Значительные ограничения на полиморфные отношения

◦Например:

Получение Set<Person>

em.find(Person.class, id)‏

◦Приводят к многочисленным запросам или одному запросу с

множеством объединений

2-76

Java Persistence API

Сущности (Entities)‏

Транзакции в JPA

Иерархия классов и JPA

Связи в JPA

EJB-QL

Обработчики (Listeners)‏

2-77

Свойства связей

Количество элементов

◦Один-к-одному

◦Один-ко-многим

◦Много-ко-многим

Зависимость

◦Ассоциация

◦Композиция

Направление

◦Однонаправленные

◦Двунаправленные

2-78

Двунаправленные связи

В SQL все связи — двунаправленные

В Java все связи — однонаправленные

Двунаправленные связи в Java моделируются двумя однонаправленными

Две ссылки в памяти моделируют одно значение в реляционной БД

Приложение должно управлять двунаправленными связями в Java

2-79

Каскадирование в JPA

Свойство Cascade

◦Определяет действия менеджера сущностей по отношению к

связанным сущностям

◦CascadeType enum

PERSIST

REMOVE, REFRESH, MERGE, ALL

◦Каскадирование в JPA по умолчанию

отключено

2-80