Создание NOT NULL ограничений на колонки БД с помощью аннотаций @Basic и @Column в Hibernate.

Если Spring приложение запускается, например, с параметром spring.jpa.hibernate.ddl-auto=update, то Hibernate сам берёт на себя задачу по созданию и модификации схемы БД в соответствии с описаниями классов предметной области в приложении. С помощью аннотаций можно уточнять некоторые настройки схемы, в том числе ограничения колонок на допустимость/недопустимость значений NULL.

Создадим базовое веб-приложение на связке Spring Boot 3 + Hibernate + PostgreSQL

Указать HIbernate’у, что колонка таблицы должна быть создана с органичением NOT NULL можно, указав над соответствующим полем либо аннотацию @Basic с параметром optional = false, либо аннотацию @Column с параметром nullable = false.

Проиллюстрируем использование этих аннотаций. Создадим класс предметной следующего содержания:

Запустим приложение, чтобы Hibernate создал соответствующую таблицу и посмотрим её описание в psql с помощью команды \d+ table_name.

Из описания таблицы видно, что полю basicOptionalFalse, помоченному аннотацией @Basic(optional = false) была создана соответствующая колонка basic_optional_false с ограничение NOT NULL. То же самое сделано для поля columnNullableFalse.

Следует отметить, что проверка на NULL в данном случае будет происходить в базе данных. В приложении такие поля нужно либо проверять вручную перед сохранением в БД, либо использовать аннотации валидации, в частности @NotNull, которые упрощают валидацию сущностей на предмет соответствия тем или иным ограничениям.