Справочная документация Hibernate

5.0.0.CR2

Оригинал: https://docs.jboss.org/hibernate/orm/5.0/manual/en-US/html/ Права на оригинал: ©2004 Red Hat, Inc.
2015-07-08

Оглавление

  1. 1. Руководство
    1. 1.1. Часть 1 - Первое приложение Hibernate
      1. 1.1.1. Установка
      2. 1.1.2. Первый класс
      3. 1.1.3. Файл отображений
      4. 1.1.4. Конфигурирование Hibernate
      5. 1.1.5. Сборка с Maven
      6. 1.1.6. Запуск и помошники
      7. 1.1.7. Загрузка и хранение объектов
    2. 1.2. Часть 2 - Отображение ассоциаций
      1. 1.2.1. Отображение для класса Person
      2. 1.2.2. Однонаправленная ассоциация на основе Set
      3. 1.2.3. Работа с ассоциациями
      4. 1.2.4. Коллекия значений
      5. 1.2.5. Двунаправленные ассоциации
      6. 1.2.6. Работа двунаправленных связей
    3. 1.3. Часть 3 - приложение Менеджер событий
      1. 1.3.1. Написание основного сервлета
      2. 1.3.2. Обработка и визуализация
      3. 1.3.3. Развёртывание и тестирование
    4. 1.4. Резюме
  2. 2. Архитектура
    1. 2.1. Обзор
      1. 2.1.1. Минимальная архитектура
      2. 2.1.2. Комплексная архитектура
      3. 2.1.3. Основной API
    2. 2.2. Контекстные сессии
  3. 3. Конфигурирование
    1. 3.1. Программная конфигурация
    2. 3.2. Получение SessionFactory
    3. 3.3. Соединения JDBC
    4. 3.4. Необязательные свойства конфигурации
      1. 3.4.1. Диалекты SQL
      2. 3.4.2. Outer Join Fetching
      3. 3.4.3. Двоичные потоки
      4. 3.4.4. Кэш второго уровня и кэш запросов
      5. 3.4.5. Замена языка запроса
      6. 3.4.6. Статистика Hibernate
    5. 3.5. Логирование
    6. 3.6. Имплементация NamingStrategy
    7. 3.7. Имплементация PersisterClassProvider
    8. 3.8. XML-файл конфигурации
    9. 3.9. Интеграция на сервер приложений Java EE
      1. 3.9.1. Конфигурация стратегии транзакций
      2. 3.9.2. JNDI-связанный SessionFactory
      3. 3.9.3. Управление текущим контекстом сессии с помощью JTA
  4. 4. Постоянные классы
    1. 4.1. Пример простого POJO
      1. 4.1.1. Реализация конструктора без аргументов
      2. 4.1.2. Предоставление свойства идентификатора
      3. 4.1.3. Предпочтение "не-конечным" классам (частично необязательно)
      4. 4.1.4. Объявление аксессоров и мутаторов для постоянных полей (необязательно)
    2. 4.2. Реализация наследования
    3. 4.3. Реализация equals() и hashCode()
    4. 4.4. Динамические модели
    5. 4.5. Tuplizers (Кортежизаторы)
    6. 4.6. EntityNameResolvers
  5. 5. Основы O/R отображения
    1. 5.1. Объявление отображения
      1. 5.1.1. Сущность
      2. 5.1.2. Идентификаторы
      3. 5.1.3. Свойства оптимистической блокировки (необязательно)
      4. 5.1.4. Свойство
      5. 5.1.5. Встроенные объекты (они же компоненты)
      6. 5.1.6. Стратегия наследования
      7. 5.1.7. Отображение ассоциаций один-к-одному и многие-к-одному
      8. 5.1.8. Естестенный-идентификатор (Natural-id)
      9. 5.1.9. Any
      10. 5.1.10. Свойства
      11. 5.1.11. Некоторые особенности hbm.xml
    2. 5.2. Типа Hibernate
      1. 5.2.1. Сущности и значения
      2. 5.2.2. Основные типы значений
      3. 5.2.3. Пользовательские типы значений
    3. 5.3. Отображение класса более одного раза
    4. 5.4. Идентификаторы, цитируемые SQL
    5. 5.5. Сгенерированные свойства
    6. 5.6. Преобразователи столбцов: выражения для чтения и записи
    7. 5.7. Вспомогательные объекты базы данных
  6. 6. Типы
    1. 6.1. Типы значений
      1. 6.1.1. Основные типы значений
      2. 6.1.2. Составные типы
      3. 6.1.3. Типы коллекций
    2. 6.2. Типы сущностей
    3. 6.3. Значение категорий типов
    4. 6.4. Пользовательские типы
      1. 6.4.1. Основные типы с использованием org.hibernate.type.Type
      2. 6.4.2. Основные типы с использованием org.hibernate.usertype.UserType
      3. 6.4.3. Основные типы с использованием org.hibernate.usertype.CompositeUserType
    5. 6.5. Реестр типов
  7. 7. Отображение коллекции
    1. 7.1. Постоянные (persistent) коллекции
    2. 7.2. Как отображать коллекции
      1. 7.2.1. Сбор внешних ключей
      2. 7.2.2. Индексированные коллекции
      3. 7.2.3. Коллекции основных типов и встраиваемых объектов
    3. 7.3. Расширенные отображения коллекции
      1. 7.3.1. Отсортированные коллекции
      2. 7.3.2. Двунаправленные ассоциации
      3. 7.3.3. Двунаправленные ассоциации с индексированными коллекциями
      4. 7.3.4. Тройные ассоциации
      5. 7.3.5. Использование <idbag>
    4. 7.4. Примеры коллекций
  8. 8. Ассоциативные отображения
    1. 8.1. Введение
    2. 8.2. Однонаправленные ассоциации
      1. 8.2.1. Многие-к-одному
      2. 8.2.2. Один-к-одному
      3. 8.2.3. Один-ко-многим
    3. 8.3. Однонаправленные ассоциации с присоединением таблиц
      1. 8.3.1. Один-ко-многим
      2. 8.3.2. Многие-к-одному
      3. 8.3.3. Один-к-одному
      4. 8.3.4. Многие-ко-многим
    4. 8.4. Двунаправленные ассоциации
      1. 8.4.1. Один-ко-многим / Многие-к-одному
      2. 8.4.2. Один-к-одному
    5. 8.5. Двунаправленные ассоциации с присоединением таблиц
      1. 8.5.1. Один-ко-многим / Многие-к-одному
      2. 8.5.2. Один-к-одному
      3. 8.5.3. Многие-ко-многим
    6. 8.6. Более сложные ассоциативные отображения
  9. 9. Отображение компонентов
    1. 9.1. Зависимые объекты
    2. 9.2. Коллекции зависимых объектов
    3. 9.3. Компоненты как индексы карты
    4. 9.4. Компоненты как составные идентификаторы
    5. 9.5. Динамические компоненты
  10. 10. Отображение наследования
    1. 10.1. Три стратегии
      1. 10.1.1. Иерархия Таблица на класс
      2. 10.1.2. Таблица на подкласс
      3. 10.1.3. Таблица на подкласс: использование дискриминатора
      4. 10.1.4. Смешивание «Иерархии Таблица на класс» с «Таблица на подкласс»
      5. 10.1.5. Таблица на конкретный класс
      6. 10.1.6. Таблица на конкретный класс с использованием неявного полиморфизма
      7. 10.1.7. Смешивание неявного полиморфизма с другими отображениями наследования
    2. 10.2. Ограничения
  11. 11. Работа с объектами
    1. 11.1. Состояния объектов Hibernate
    2. 11.2. Делаем объекты постоянными (persistent)
    3. 11.3. Загрузка объекта
    4. 11.4. Запросы
      1. 11.4.1. Выполнение запросов
      2. 11.4.2. Фильтрация коллекций
      3. 11.4.3. Запросы Criteria
      4. 11.4.4. Запросы на нативном SQL
    5. 11.5. Изменение постоянных объектов
    6. 11.6. Изменение отсоединённых (detached) объектов
    7. 11.7. Автоматическое обнаружение состояния
    8. 11.8. Удаление постоянных объектов
    9. 11.9. Репликация объекта между двумя разными хранилищами данных
    10. 11.10. Сброс (flush) сессии
    11. 11.11. Переходное постоянство (Transitive persistence)
    12. 11.12. Использование метаданных
  12. 12. Сущности «только для чтения»
    1. 12.1. Создание постоянных сущностей «только для чтения»
      1. 12.1.1. Сущности неизменяемых классов
      2. 12.1.2. Загрузка постоянных сущностей как «только для чтения»
      3. 12.1.3. Загрузка сущностей «только для чтения» из Query/Criteria HQL
      4. 12.1.4. Создание постоянной сущности «только для чтения»
    2. 12.2. Влияние «только для чтения» на тип свойства
      1. 12.2.1. Простые свойства
      2. 12.2.2. Однонаправленные ассоциации
      3. 12.2.3. Двунаправленные ассоциации
  13. 13. Транзакции и параллельное выполнение
    1. 13.1. Сессия и области видимости транзакций
      1. 13.1.1. Единица работы (Unit of work)
      2. 13.1.2. Длинные разговоры (Long conversations)
      3. 13.1.3. Учёт идентичности объекта
      4. 13.1.4. Общие проблемы
    2. 13.2. Разграничение транзакций базы данных
      1. 13.2.1. Неуправляемая среда
      2. 13.2.2. Использование JTA
      3. 13.2.3. Обработка исключений
      4. 13.2.4. Таймаут транзакции
    3. 13.3. Оптимистический контроль параллельного выполнения
      1. 13.3.1. Проверка версии приложения
      2. 13.3.2. Расширенная сессия и автоматическое управление версиями
      3. 13.3.3. Отсоединённые объекты и автоматическое управление версиями
      4. 13.3.4. Настройка автоматического управления версиями
    4. 13.4. Пессимистическая блокировка
    5. 13.5. Способы освобождения соединения
  14. 14. Перехватчики и события
    1. 14.1. Перехватчики
    2. 14.2. Система событий
    3. 14.3. Декларативная безопасность Hibernate
  15. 15. Пакетная обработка
    1. 15.1. Пакетная вставка
    2. 15.2. Пакетное обновление
    3. 15.3. Интерфейс StatelessSession
    4. 15.4. Операции в DML-стиле
  16. 16. HQL: Язык запросов Hibernate
    1. 16.1. Чувствительность к регистру
    2. 16.2. Секция «from»
    3. 16.3. Ассоциации и объединения (join)
    4. 16.4. Формы синтаксиса join
    5. 16.5. Ссылаясь на свойство идентификатора
    6. 16.6. Секция «select»
    7. 16.7. Агригатные функции
    8. 16.8. Полиморфные запросы
    9. 16.9. Секция «where»
    10. 16.10. Выражения
    11. 16.11. Секция «order by»
    12. 16.12. Секция «group by»
    13. 16.13. Подзапросы
    14. 16.14. Примеры HQL
    15. 16.15. Массовое обновление и удаление
    16. 16.16. Советы и хитрости
    17. 16.17. Компоненты
    18. 16.18. Синтаксис конструктора значения записи
  17. 17. Запросы Criteria
    1. 17.1. Создание экземпляра Criteria
    2. 17.2. Сужение набора результатов
    3. 17.3. Упорядочивание результатов
    4. 17.4. Ассоциации
    5. 17.5. Динамическая ассоциативная выборка
    6. 17.6. Компоненты
    7. 17.7. Коллекции
    8. 17.8. Запросы Example
    9. 17.9. Проекции, агрегация и группировка
    10. 17.10. Отсоединённые запросы и подзапросы
    11. 17.11. Запросы по естественному идентификатору
  18. 18. Нативный SQL
    1. 18.1. Использование SQLQuery
      1. 18.1.1. Скалярные запросы
      2. 18.1.2. Запросы сущностей
      3. 18.1.3. Обработка ассоциаций и коллекций
      4. 18.1.4. Возвращение нескольких сущностей
      5. 18.1.5. Возвращение неуправляемых сущностей
      6. 18.1.6. Обработка наследования
      7. 18.1.7. Параметры
    2. 18.2. Именованные SQL-запросы
      1. 18.2.1. Использование return-property для явного указания имён столбцов/псевдонимов
      2. 18.2.2. Использование хранимых процедур для запросов
    3. 18.3. Пользовательский SQL для создания, обновления и удаления
    4. 18.4. Пользовательский SQL для загрузки
  19. 19. Фильтрация данных
    1. 19.1. Фильтры Hibernate
  20. 20. Повышение производительности
    1. 20.1. Стратегии выборки
      1. 20.1.1. Работа с ленивыми ассоциациями
      2. 20.1.2. Настройка стратегий выборки
      3. 20.1.3. Одиносторонняя ассоциация прокси
      4. 20.1.4. Инициализация коллекций и прокси
      5. 20.1.5. Использование пакетной выборки
      6. 20.1.6. Использование выборки подзапросов
      7. 20.1.7. Выборка профилей
      8. 20.1.8. Использование ленивой выборки свойств
    2. 20.2. Кэш второго уровня
      1. 20.2.1. Отображения кэшей
      2. 20.2.2. Стратегия: только для чтения
      3. 20.2.3. Стратегия: чтение/запись
      4. 20.2.4. Стратегия: нестрогое чтение/запись
      5. 20.2.5. Стратегия: транзакционная
      6. 20.2.6. Совместимость с поставщиком кэша/параллельной стратегией
    3. 20.3. Управление кэшами
    4. 20.4. Кэш запросов
      1. 20.4.1. Включение кэширования запросов
      2. 20.4.2. Области кэша запросов
    5. 20.5. Улучшение байткода
      1. 20.5.1. Реализация интерфейса org.hibernate.engine.spi.ManagedEntity
      2. 20.5.2. Инструмент времени выполнения (Runtime)
      3. 20.5.3. Инструмент времени построения (Build-time)
    6. 20.6. Понимание производительности коллекций
      1. 20.6.1. Таксономия
      2. 20.6.2. List, Map, idbag и Set — наиболее эффективные коллекции для обновления
      3. 20.6.3. Bag и List являются наиболее эффективными обратными коллекциями
      4. 20.6.4. Удаление одним «выстрелом»
    7. 20.7. Мониторинг производительности
      1. 20.7.1. Мониторинг SessionFactory
      2. 20.7.2. Метрики
  21. 21. Руководство по набору инструментов
    1. 21.1. Автоматическое создание схемы
      1. 21.1.1. Настройка схемы
      2. 21.1.2. Запуск инструмента
      3. 21.1.3. Свойства
      4. 21.1.4. Использование Ant
      5. 21.1.5. Инкрементные обновления схемы
      6. 21.1.6. Использование Ant для инкрементных обновлений схемы
      7. 21.1.7. Проверка схемы
      8. 21.1.8. Использование Ant для проверки схемы
  22. 22. Дополнительные модули
    1. 22.1. Проверка бинов (Bean Validation)
      1. 22.1.1. Добавление Проверки бинов (Bean Validation)
      2. 22.1.2. Конфигурация
      3. 22.1.3. Перехват нарушений
      4. 22.1.4. Схема базы данных
    2. 22.2. Поиск Hibernate (Hibernate Search)
      1. 22.2.1. Описание
      2. 22.2.2. Интеграция с аннотациями Hibernate
  23. 23. Пример. Родитель/Ребёнок
    1. 23.1. Заметка о коллекциях
    2. 23.2. Двунаправленный «один-ко-многим»
    3. 23.3. Каскадный жизненный цикл
    4. 23.4. Каскады и unsaved-value (несохраненные значения)
    5. 23.5. Вывод
  24. 24. Пример. Приложение Веб-блог
    1. 24.1. Постоянные (persistent) классы
    2. 24.2. Отображения Hibernate
    3. 24.3. Код Hibernate
  25. 25. Пример. Различные отображения
    1. 25.1. Работодатель/Работник
    2. 25.2. Автор/Работа
    3. 25.3. Клиент/Заказ/Товар
    4. 25.4. Различные примеры отображений
      1. 25.4.1. "Типизированная" ассоциация «один-к-одному»
      2. 25.4.2. Пример составного ключа
      3. 25.4.3. «Многие-ко-многим» с общим атрибутом составного ключа
      4. 25.4.4. Контекстная дискриминация
      5. 25.4.5. Ассоциации по альтернативным ключам
  26. 26. Лучшие практики
  27. 27. Вопросы по переносимости баз данных
    1. 27.1. Основы переносимости
    2. 27.2. Диалект
    3. 27.3. Разрешение диалекта
    4. 27.4. Генерация идентификаторов
    5. 27.5. Функции базы данных