В новой версии 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
, а преобразование старых файлов возможно автоматически.tags: #статья #полезное