Аннотация @GeneratedValueиспользуется в Java для указания стратегии генерации автоматически генерируемых значений для полей сущностей. Обычно он используется вместе с аннотацией @Idдля определения стратегии генерации первичного ключа для класса сущности.
Для @GeneratedValueдоступны различные стратегии. Вот некоторые из наиболее часто используемых:
-
АВТО:
Эта стратегия позволяет поставщику постоянства (например, Hibernate) выбирать подходящую стратегию на основе базовой базы данных. Он может использовать столбец идентификаторов, последовательность или генератор на основе таблиц.@Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; -
IDENTITY:
Эта стратегия использует столбец идентификаторов в базе данных для создания уникальных значений первичного ключа.@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; -
ПОСЛЕДОВАТЕЛЬНОСТЬ:
Эта стратегия использует последовательность базы данных для создания уникальных значений первичного ключа. Для этого требуется определение объекта последовательности в базе данных.@Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequence_generator") @SequenceGenerator(name = "sequence_generator", sequenceName = "my_sequence") private Long id; -
ТАБЛИЦА:
Эта стратегия использует отдельную таблицу в базе данных для создания уникальных значений первичного ключа. Требуется определение конкретной таблицы для генерации ключей.@Id @GeneratedValue(strategy = GenerationType.TABLE, generator = "table_generator") @TableGenerator(name = "table_generator", table = "id_generator", pkColumnName = "id_name", valueColumnName = "id_value") private Long id;
Это всего лишь несколько примеров стратегий, доступных для @GeneratedValue. Подходящая стратегия зависит от конкретных требований вашего приложения и возможностей вашей базы данных.