В новой версии Hibernate перешёл на Apache License 2.0 и обновил базовые зависимости — теперь по умолчанию используются Java 17 и Jakarta Persistence 3.2.
Также была проведена очистка от устаревших модулей: вместо HCANN теперь применяется Hibernate Models, а модули hibernate-ucp и TeradataDialect удалены.
Среди ключевых изменений:
▶️ @SoftDelete теперь поддерживает стратегию с временной меткой — фиксируется точное время удаления записи
▶️ @EmbeddedColumnNaming позволяет настраивать префиксы колонок для embedded-полей с помощью шаблона
▶️ @NamedEntityGraph даёт возможность описывать графы загрузки в виде строки, без лишней аннотационной обвязки
▶️ Методы Session.findMultiple() и StatelessSession.getMultiple() позволяют загружать несколько сущностей по ID одной командой с учётом BatchSize
▶️ Вместо старых hints теперь используются типобезопасные FindOption, LockOption и RefreshOption
▶️ Добавлено новое API для построения запросов через SelectionSpecification и MutationSpecification
▶️ Метод Session.getManagedEntities() предоставляет доступ ко всем сущностям в кэше первого уровня
▶️ Расширена поддержка enum: теперь CHECK-ограничения создаются и для перечислений с AttributeConverter
▶️ Поддерживаются SQL-функции для работы с JSON и XML, включая json_agg(), json_value(), xmlquery() и другие
▶️ Появилась поддержка set-returning functions — таких как unnest(), generate_series() и json_table()
Кроме того, Hibernate окончательно отказывается от схемы маппинга
hbm.xml — ей на смену пришёл формат mapping.xml, а преобразование старых файлов возможно автоматически.⛓ Подробный разбор
📖 Руководство по миграции с 6.6
tags: #статья #полезное
📱 Java Developer | Чат
