Todos os geradores implementam a interface org.hibernate.id.IdentifierGenerator. Esta é uma interface muito simples. Alguns aplicativos podem optar por fornecer suas próprias implementações especializadas, no entanto, o Hibernate fornece uma variedade de implementações integradas. Os nomes de atalho para os geradores integrados são os seguintes:
incremento
gera identificadores do tipo long, short ou int que são únicos apenas quando nenhum outro processo está inserindo dados na mesma tabela. Não use em um cluster.
identidade
suporta colunas de identidade em DB2, MySQL, MS SQL Server, Sybase e HypersonicSQL. O identificador retornado é do tipo long, short ou int.
seqüência
usa uma sequência em DB2, PostgreSQL, Oracle, SAP DB, McKoi ou um gerador em Interbase. O identificador retornado é do tipo long, short ou int
hilo
usa um algoritmo hi / lo para gerar com eficiência identificadores do tipo long, short ou int, dadas uma tabela e coluna (por padrão hibernate_unique_key e next_hi respectivamente) como uma fonte de valores hi. O algoritmo hi / lo gera identificadores que são exclusivos apenas para um banco de dados específico.
seqhilo
usa um algoritmo hi / lo para gerar identificadores do tipo long, short ou int de maneira eficiente, dada uma sequência de banco de dados nomeada.
uuid
usa um algoritmo UUID de 128 bits para gerar identificadores do tipo string que são exclusivos em uma rede (o endereço IP é usado). O UUID é codificado como uma string de 32 dígitos hexadecimais de comprimento.
guid
usa uma string GUID gerada pelo banco de dados no MS SQL Server e MySQL.
nativo
seleciona identidade, sequência ou hilo dependendo das capacidades do banco de dados subjacente.
atribuído
permite que o aplicativo atribua um identificador ao objeto antes que save () seja chamado. Esta é a estratégia padrão se nenhum elemento for especificado.
selecionar
recupera uma chave primária, atribuída por um disparador de banco de dados, selecionando a linha por alguma chave única e recuperando o valor da chave primária.
estrangeiro
usa o identificador de outro objeto associado. Geralmente é usado em conjunto com uma associação de chave primária.
identidade de sequência
uma estratégia de geração de sequência especializada que utiliza uma sequência de banco de dados para a geração de valor real, mas combina isso com JDBC3 getGeneratedKeys para retornar o valor do identificador gerado como parte da execução da instrução de inserção. Essa estratégia é compatível apenas com drivers Oracle 10g direcionados para JDK 1.4. Os comentários sobre essas instruções de inserção estão desabilitados devido a um bug nos drivers Oracle.
Se você está construindo um aplicativo simples com poucos usuários simultâneos, você pode ir para incremento, identidade, hilo etc. Eles são simples de configurar e não precisam de muita codificação dentro do banco de dados.