Архив рубрики: Hibernate

Настройка имён таблиц с помощью аннотации @Table в Hibernate

При автоматической генерации схемы БД на основе классов предметной области спецификация JPA и Hibenate, как её реализация, позволяют очень гибко настраивать имена таблиц, соответствующих сущностям.

Читать далее

Выбор стратегии аннотации @GeneratedValue при настройке генерации id в Hibernate

Для автоматической генерации id новых объектов сущностей Hibernate может использовать различные стратегии. Помимо тонко настраиваемых стратегий самого Hibernate, в спецификации JPA также доступны несколько стандартных стратегий, которые можно указать параметром strategy в аннотации @GeneratedValue над идентификационным полем. Здесь мы их и рассмотрим.

Читать далее

Создание кастомного генератора id через аннотацию @GenericGenerator в Hibernate

Обычно в качестве генератора id используется сиквенс базы данных, который Hibernate создаёт автоматически, когда мы указываем над идентификационным полем аннотацию @GeneratedValue(strategy = GenerationType.SEQUENCE) или @GeneratedValue(strategy = GenerationType.AUTO). Этот сиквенс можно настроить: задать ему имя и первоначальное значение. Кроме того, вместо сиквенса можно настроить использование других методов генерации id, если, например, СУБД не поддерживает синквенсы.

Читать далее

Разница между сущностями (entity) и значениями (value) в объектно-реляционном отображении

При работе с Hibernate и другими ОРМ принято придерживаться принципа глубокой детализации предметной области (fine-grained domain model), что обычно означает, что классов с данными в приложении должно быть больше, чем таблиц в базе данных. Это достигается за счёт разделения классов на сущности и значения.

Читать далее

Hibernate. Использование именованных запросов (@NamedQueries) на уровне пакета

Создадим именованный запрос в файле package-info.java, который в дальнейшем будет вызываться по строке с именем. Именованные запросы, вызываемые через методы репозитория, рассмотрены в другой статье.

Читать далее

Hibernate. Использование именованных запросов (@NamedQueries) на уровне класса

Создадим именованный запрос над классом сущности, который в дальнейшем будет вызываться через специальный метод в репозитории. Именованные запросы, вызываемые через методы репозитерия, рассмотрены в другой статье.

Читать далее