모든 생성기는 org.hibernate.id.IdentifierGenerator 인터페이스를 구현합니다. 이것은 매우 간단한 인터페이스입니다. 일부 애플리케이션은 고유 한 특수 구현을 제공하도록 선택할 수 있지만 Hibernate는 다양한 내장 구현을 제공합니다. 내장 생성기의 바로 가기 이름은 다음과 같습니다.
증가
다른 프로세스가 동일한 테이블에 데이터를 삽입하지 않는 경우에만 고유 한 long, short 또는 int 유형의 식별자를 생성합니다. 클러스터에서 사용하지 마십시오.
정체
DB2, MySQL, MS SQL Server, Sybase 및 HypersonicSQL에서 ID 열을 지원합니다. 반환 된 식별자는 long, short 또는 int 유형입니다.
순서
DB2, PostgreSQL, Oracle, SAP DB, McKoi의 시퀀스 또는 Interbase의 생성기를 사용합니다. 반환 된 식별자는 long, short 또는 int 유형입니다.
Hilo
hi / lo 알고리즘을 사용하여 hi 값의 소스로 테이블과 열 (각각 기본적으로 hibernate_unique_key 및 next_hi)이 주어지면 long, short 또는 int 유형의 식별자를 효율적으로 생성합니다. hi / lo 알고리즘은 특정 데이터베이스에 대해서만 고유 한 식별자를 생성합니다.
Seqhilo
hi / lo 알고리즘을 사용하여 명명 된 데이터베이스 시퀀스가 주어지면 long, short 또는 int 유형의 식별자를 효율적으로 생성합니다.
UUID
128 비트 UUID 알고리즘을 사용하여 네트워크 내에서 고유 한 문자열 유형의 식별자를 생성합니다 (IP 주소가 사용됨). UUID는 길이가 32 자리 16 진수 문자열로 인코딩됩니다.
GUID
MS SQL Server 및 MySQL에서 데이터베이스 생성 GUID 문자열을 사용합니다.
원주민
기본 데이터베이스의 기능에 따라 ID, 시퀀스 또는 hilo를 선택합니다.
할당
응용 프로그램이 save ()가 호출되기 전에 객체에 식별자를 할당하도록합니다. 요소가 지정되지 않은 경우 이것이 기본 전략입니다.
고르다
고유 키로 행을 선택하고 기본 키 값을 검색하여 데이터베이스 트리거에 의해 할당 된 기본 키를 검색합니다.
외국
다른 관련 개체의 식별자를 사용합니다. 일반적으로 기본 키 연결과 함께 사용됩니다.
시퀀스 동일성
실제 값 생성을 위해 데이터베이스 시퀀스를 사용하지만이를 JDBC3 getGeneratedKeys와 결합하여 삽입 문 실행의 일부로 생성 된 식별자 값을 반환하는 특수 시퀀스 생성 전략입니다. 이 전략은 JDK 1.4를 대상으로하는 Oracle 10g 드라이버에서만 지원됩니다. Oracle 드라이버의 버그로 인해 이러한 삽입 문에 대한 주석을 사용할 수 없습니다.