В API Doc это очень четко сказано.
Все генераторы реализуют интерфейс org.hibernate.id.IdentifierGenerator. Это очень простой интерфейс. Некоторые приложения могут предоставлять свои собственные специализированные реализации, однако Hibernate предоставляет ряд встроенных реализаций. Имена ярлыков для встроенных генераторов следующие:
приращение
генерирует идентификаторы типа long, short или int, которые уникальны только тогда, когда никакой другой процесс не вставляет данные в ту же таблицу. Не используйте в кластере.
идентичность
поддерживает столбцы идентичности в DB2, MySQL, MS SQL Server, Sybase и HypersonicSQL. Возвращаемый идентификатор имеет тип long, short или int.
последовательность
использует последовательность в DB2, PostgreSQL, Oracle, SAP DB, McKoi или генератор в Interbase. Возвращаемый идентификатор имеет тип long, short или int.
хило
использует алгоритм hi / lo для эффективной генерации идентификаторов типа long, short или int, учитывая таблицу и столбец (по умолчанию hibernate_unique_key и next_hi соответственно) в качестве источника значений hi. Алгоритм hi / lo генерирует идентификаторы, уникальные только для конкретной базы данных.
секхило
использует алгоритм hi / lo для эффективной генерации идентификаторов типа long, short или int с учетом именованной последовательности базы данных.
uuid
использует 128-битный алгоритм UUID для генерации идентификаторов типа string, уникальных в сети (используется IP-адрес). UUID кодируется как строка длиной 32 шестнадцатеричных цифры.
гид
использует строку GUID, сгенерированную базой данных, в MS SQL Server и MySQL.
родной
выбирает идентичность, последовательность или хило в зависимости от возможностей базовой базы данных.
назначен
позволяет приложению присвоить объекту идентификатор перед вызовом save (). Это стратегия по умолчанию, если элемент не указан.
Выбрать
извлекает первичный ключ, назначенный триггером базы данных, путем выбора строки по некоторому уникальному ключу и получения значения первичного ключа.
иностранный
использует идентификатор другого связанного объекта. Обычно он используется вместе с ассоциацией первичного ключа.
идентичность последовательности
специализированная стратегия генерации последовательности, которая использует последовательность базы данных для генерации фактического значения, но объединяет ее с JDBC3 getGeneratedKeys для возврата сгенерированного значения идентификатора как части выполнения инструкции вставки. Эта стратегия поддерживается только драйверами Oracle 10g, предназначенными для JDK 1.4. Комментарии к этим операторам вставки отключены из-за ошибки в драйверах Oracle.
Если вы создаете простое приложение с небольшим количеством одновременных пользователей, вы можете использовать инкремент, идентификацию, hilo и т. Д. Их легко настроить и не нужно много кодировать внутри базы данных.
Вы должны выбрать последовательность или руководство в зависимости от вашей базы данных. Это безопасно и лучше, потому что id
генерация будет происходить внутри базы данных.
Обновление:
недавно у нас возникла проблема с идентификатором, когда примитивный тип (int) был исправлен с использованием вместо этого типа warapper (Integer).