Hibernate — это популярный фреймворк для работы с реляционными базами данных (PostgreSQL, MySQL, Oracle и др.) в Java-приложениях. Он реализует концепцию ORM (Object-Relational Mapping), позволяя разработчикам работать с данными как с Java-объектами, а не SQL-запросами.
Основные возможности Hibernate
- Отображение Java-классов на таблицы БД
- Аннотации (@Entity, @Table, @Column) или XML-конфигурация.
- Поддержка наследования (@Inheritance).
- Связи между сущностями (@OneToMany, @ManyToOne, @ManyToMany).
- Автоматическая генерация SQL
- Hibernate сам формирует SQL-запросы, избавляя от ручного написания.
- Поддержка JPQL (язык запросов, похожий на SQL, но работающий с объектами).
- Кэширование
- Кэш 1-го уровня (сессионный) — работает в рамках одной сессии (Session).
- Кэш 2-го уровня — общий для нескольких сессий (например, Ehcache, Infinispan).
- Ленивая загрузка (Lazy Loading)
- Данные подгружаются только при обращении (FetchType.LAZY).
- Управление транзакциями
- Интеграция с JTA (Java Transaction API) и поддержка аннотации @Transactional.
- Миграции (Hibernate + Flyway/Liquibase)
- Автоматическое создание/обновление схемы БД (hibernate.hbm2ddl.auto).