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

jpa

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

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

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

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

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

(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

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