Назад к вопросам
Senior
4
Какие правила генерации идентификаторов настраивались в Hibernate? Какое правило используется при стратегии AUTO в PostgreSQL?
Компании, где спрашивали
Сбербанк
Ответ от нейросети
sobes.tech AI
В Hibernate для генерации идентификаторов сущностей можно настраивать различные стратегии через аннотацию @GeneratedValue с параметром strategy. Основные стратегии:
IDENTITY— идентификатор генерируется базой данных, например, через автоинкремент.SEQUENCE— используется последовательность (sequence) базы данных.TABLE— генерация идентификаторов через специальную таблицу.AUTO— Hibernate сам выбирает стратегию в зависимости от диалекта базы данных.
При использовании стратегии AUTO в PostgreSQL Hibernate по умолчанию применяет стратегию SEQUENCE, так как PostgreSQL поддерживает последовательности. Это означает, что для генерации идентификаторов создаётся и используется sequence в базе данных.
Пример:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
// ...
}
В PostgreSQL это будет соответствовать использованию sequence для генерации id.