Не всегда нужно, чтобы все поля класса отображались в соответствующие колонки в базе данных. Но Hibernate по умолчанию пытается отобразить именно все поля класса в колонку или колонки БД следуя определённым правилам. Чтобы исключить то или иное поле класса из отображения используется либо аннотация @Transient, либо ключевое слово transient.
Создадим базовое веб-приложение на связке Spring Boot 3 + Hibernate + PostgreSQL
Чтобы убедится в том, что поля, помеченные либо аннотацией @jakarta.persistence.Transient, либо ключевым словом transient не будут отображаться в колонки таблицы, создадим в приложении следующий класс:
1 2 3 4 5 6 7 8 9 10 11 |
@Entity public class ManageOrm { @Id private Long id; private transient String transientKeyword; @Transient private String transientAnnotation; } |
Затем запустим приложение, чтобы Hibernate создал таблицу для этой сущности и посмотрим её описание в консоли psql с помощью команды \d+ table_name
.
Как видно из описания, Hibernate создал только колонку первичного ключа. Ни для поля transientKeyword, ни для transientAnnotation колонки не созданы.