Hibernate — это ORM фреймворк для Java, реализующий спецификацию JPA. Он предоставляет декларативное отображение реляционной базы данных на объектную модель Java, устраняя необходимость в написании SQL-кода вручную для большинства CRUD-операций.
Основные принципы работы:
- ORM (Object-Relational Mapping): Отображение классов Java на таблицы базы данных и объектов на строки. Hibernate генерирует SQL-запросы на основе этого отображения.
- Persistent Context: Область видимости, в которой Hibernate управляет состояниями персистентных сущностей. Сущности могут находиться в состояниях new, managed, detached или removed.
- Session: Основной интерфейс для взаимодействия с базой данных. Сессия представляет собой единицу работы (unit of work) с базой данных.
- Transaction: Управление атомарными операциями с базой данных, обеспечивая целостность данных.
Основные особенности:
- Ленивая загрузка (Lazy Loading): Загрузка связанных объектов только по требованию, что позволяет оптимизировать производительность.
- Кэширование: Поддержка кэширования первого и второго уровней для уменьшения количества обращений к базе данных.
- HQL (Hibernate Query Language): Объектно-ориентированный язык запросов, похожий на SQL, но работающий с классами и свойствами, а не с таблицами и колонками.
- Criteria API: Программный способ построения запросов, предоставляющий типобезопасность.
- Интеграция: Легко интегрируется с другими фреймворками, такими как Spring.
- Разнообразие стратегий идентификации: Поддержка различных способов генерации первичных ключей (например,
IDENTITY
, SEQUENCE
, TABLE
, UUID
).
- Управление транзакциями: Интеграция с Java Transaction API (JTA) или собственное управление транзакциями.
Пример маппинга сущности с использованием аннотаций:
java
Hibernate — это ORM фреймворк для Java, реализующий спецификацию JPA. Он предоставляет декларативное отображение реляционной базы данных на объектную модель Java, устраняя необходимость в написании SQL-кода вручную для большинства CRUD-операций.
Основные принципы работы:
- ORM (Object-Relational Mapping): Отображение классов Java на таблицы базы данных и объектов на строки. Hibernate генерирует SQL-запросы на основе этого отображения.
- Persistent Context: Область видимости, в которой Hibernate управляет состояниями персистентных сущностей. Сущности могут находиться в состояниях new, managed, detached или removed.
- Session: Основной интерфейс для взаимодействия с базой данных. Сессия представляет собой единицу работы (unit of work) с базой данных.
- Transaction: Управление атомарными операциями с базой данных, обеспечивая целостность данных.
Основные особенности:
- Ленивая загрузка (Lazy Loading): Загрузка связанных объектов только по требованию, что позволяет оптимизировать производительность.
- Кэширование: Поддержка кэширования первого и второго уровней для уменьшения количества обращений к базе данных.
- HQL (Hibernate Query Language): Объектно-ориентированный язык запросов, похожий на SQL, но работающий с классами и свойствами, а не с таблицами и колонками.
- Criteria API: Программный способ построения запросов, предоставляющий типобезопасность.
- Интеграция: Легко интегрируется с другими фреймворками, такими как Spring.
- Разнообразие стратегий идентификации: Поддержка различных способов генерации первичных ключей (например,
IDENTITY
, SEQUENCE
, TABLE
, UUID
).
- Управление транзакциями: Интеграция с Java Transaction API (JTA) или собственное управление транзакциями.
Пример маппинга сущности с использованием аннотаций:
java