Nullable поля в Entity: угроза вашему приложению Привет, друзья!… — Библиотека Java разработчика — TG.ME

🧩 Nullable поля в Entity: угроза вашему приложению

Привет, друзья! Сегодня хочу поделиться одной ошибкой, которую часто встречаю в проектах — использование nullable = true в JPA-сущностях по умолчанию, без осознанного выбора.

Когда мы пишем:


@Column(name = "middle_name")
private String middleName;


JPA считает, что поле nullable, даже если по бизнес-логике оно быть пустым не должно. А вот что будет, если вы забыли это уточнить:

1. На уровне БД поле будет NULLABLE.
2. Hibernate не подскажет, что вы забыли заполнить поле.
3. В будущем это приведёт к NPE, особенно при маппинге DTO → Entity.
4. При миграциях Flyway/ Liquibase — возможно несоответствие схемы и модели.

🔍 Что делать?
1. Явно указывать nullable = false, если поле обязано быть заполнено:

@Column(name = "email", nullable = false)
private String email;

2. Использовать Bean Validation (@NotNull) — и не забывать включить её в контроллерах, сервисах, Hibernate.
3. Проверяйте соответствие схемы и сущностей. Можно использовать плагин Hibernate5DDL или включать валидацию схемы при старте.

📌 Простой совет: по умолчанию всё @Column(nullable = false), пока не докажете обратное.

Берегите свои сущности 😉

📲 Мы в MAX

👉@BookJava
👍3❤1
June 22, 2026 1.1K 8