Насколько я понимаю, если у нас есть @SequenceGenerator
аннотация и имя последовательности, hibernate извлечет следующее значение для идентификатора, вызвав nextval()
, а затем использует этот идентификатор при вставке новой записи.
Другой подход заключается в том, чтобы просто пометить столбец как автоинкремент в базе данных, и тогда Hibernate не должен будет этого делать. Например, с Postgres, в определении столбца запроса CREATE TABLE
id INTEGER PRIMARY KEY DEFAULT nextval('my_id_seq')
Каковы преимущества / недостатки каждого подхода? Существуют ли конкретные случаи, когда один метод предпочтительнее другого?