Объектно-реляционное отображение (ORM) — это процесс преобразования объектов Java в таблицы базы данных. Другими словами, это позволяет нам взаимодействовать с реляционной базой данных без использования SQL. Java Persistence API (JPA) — это спецификация, определяющая, как сохранять данные в приложениях Java. Основное внимание в JPA уделяется уровню ORM.
Hibernate — одна из самых популярных используемых сегодня сред Java ORM. Его первый релиз состоялся почти двадцать лет назад, и до сих пор он пользуется отличной поддержкой сообщества и регулярными выпусками. Кроме того, Hibernate является стандартной реализацией спецификации JPA с несколькими дополнительными функциями, специфичными для Hibernate. Давайте рассмотрим некоторые основные функции JPA и Hibernate.

Определение объектов
- Определение объектов JPA
- Жизненный цикл объекта Hibernate
- События жизненного цикла сущности JPA
- Значения столбца по умолчанию в JPA
- JPA @Basic Аннотация
- Сопоставление имен классов сущностей с именами таблиц SQL с помощью JPA
- Разница между @Size, @Length и @Column (длина = значение)
- Равенство юридических лиц JPA
- JPA @Embedded и @Embeddable
- Преобразователи атрибутов JPA
- Hibernate @NotNull против @Column (nullable = false)
- Определение уникальных ограничений в JPA
- Сущности JPA и сериализуемый интерфейс

Отношения сущностей
- Отношения «один к одному» в JPA
- Отношения «многие ко многим» в JPA
- Объяснение аннотации @JoinColumn
- Разница между @JoinColumn и mappedBy
- Сопоставление одного объекта с несколькими таблицами в JPA
- Обзор каскадных типов JPA/Hibernate
- Hibernate @WhereJoinTable Аннотация
- Отображение наследования в спящем режиме
- Учебное пособие по аннотациям Hibernate One to Many

Идентификаторы
- Обзор идентификаторов в Hibernate/JPA
- Составные первичные ключи в JPA
- Когда JPA устанавливает первичный ключ

Операции чтения
- Типы запросов JPA
- Использование параметров запроса JPA
- Создание запроса JPA между несвязанными объектами
- Работа с коллекциями ленивых элементов в JPA
- Типы соединения JPA
- FetchMode в спящем режиме
- Спящий именованный запрос

Критерии запроса
- Объединение предикатов JPA и/или критериев
- Criteria API — пример IN-выражений
- Запросы критериев JPA

Пагинация и сортировка
- Сортировка с помощью JPA
- Пагинация JPA
- Спящий режим
- Запросы критериев JPA

Результаты запроса
- Руководство по SqlResultSetMapping
- Настройка результатов запросов JPA с функциями агрегирования

Операции записи
- Оператор INSERT в JPA
- Пакетная вставка/обновление с помощью Hibernate/JPA
- Удаление объектов с помощью Hibernate
- Hibernate: сохранить, сохранить, обновить, объединить, saveOrUpdate