Разница между Hibernate Автоматические стратегии создания стоимости? - PullRequest
1 голос
/ 12 декабря 2011

В чем разница между этими двумя стратегиями автоматической генерации значений?

 1. @GeneratedValue
 2. @GeneratedValue(strategy=IDENTITY)

Ответы [ 3 ]

9 голосов
/ 12 декабря 2011

Это похоже на:

AUTO Указывает, что поставщик сохраняемости должен выбрать подходящую стратегию для конкретной базы данных.

ИДЕНТИФИКАЦИЯ Указывает, что поставщик сохраняемости должен назначить первичные ключи для объекта, используя столбец идентификатора базы данных.

ПОСЛЕДОВАТЕЛЬНОСТЬ Указывает, что поставщик сохраняемости должен назначить первичные ключи для объекта, используя столбец последовательности базы данных.

Таблица Указывает, что поставщик постоянства должен назначить первичные ключи для объекта, используя базовую таблицу базы данных, чтобы обеспечить уникальность.

См. API здесь http://docs.oracle.com/javaee/5/api/javax/persistence/GenerationType.html

3 голосов
/ 12 декабря 2011

Если вы не установите атрибут стратегии, по умолчанию он равен AUTO.Из документов Hibernate:AUTO: выбирает IDENTITY, SEQUENCE или TABLE в зависимости от возможностей базовой базы данных.

1 голос
/ 12 декабря 2011

Разница в том, что @GeneratedValue по умолчанию использует стратегию AUTO, а @GeneratedValue (стратегия = IDENTITY) использует стратегию IDENTITY

Вот различные варианты стратегии

AUTO - указывает, что постоянствопоставщик должен выбрать подходящую стратегию для конкретной базы данных.

IDENTITY - указывает, что поставщик постоянства должен назначить первичные ключи для объекта, используя столбец идентификаторов базы данных.

SEQUENCE - указывает, что поставщик постоянства долженназначить первичные ключи для объекта, используя столбец последовательности базы данных.

TABLE - Указывает, что поставщик сохраняемости должен назначить первичные ключи для объекта, используя базовую таблицу базы данных, чтобы обеспечить уникальность.

...