Todos los generadores implementan la interfaz org.hibernate.id.IdentifierGenerator. Esta es una interfaz muy simple. Algunas aplicaciones pueden optar por proporcionar sus propias implementaciones especializadas, sin embargo, Hibernate proporciona una gama de implementaciones integradas. Los nombres de los accesos directos para los generadores integrados son los siguientes:
incremento
genera identificadores de tipo long, short o int que son únicos solo cuando ningún otro proceso está insertando datos en la misma tabla. No lo use en un clúster.
identidad
admite columnas de identidad en DB2, MySQL, MS SQL Server, Sybase y HypersonicSQL. El identificador devuelto es de tipo long, short o int.
secuencia
utiliza una secuencia en DB2, PostgreSQL, Oracle, SAP DB, McKoi o un generador en Interbase. El identificador devuelto es de tipo long, short o int
hilo
utiliza un algoritmo hi / lo para generar eficientemente identificadores de tipo long, short o int, dada una tabla y columna (por defecto hibernate_unique_key y next_hi respectivamente) como fuente de valores hi. El algoritmo hi / lo genera identificadores que son únicos solo para una base de datos en particular.
seqhilo
utiliza un algoritmo hi / lo para generar de manera eficiente identificadores de tipo long, short o int, dada una secuencia de base de datos con nombre.
uuid
utiliza un algoritmo UUID de 128 bits para generar identificadores de tipo cadena que son únicos dentro de una red (se utiliza la dirección IP). El UUID está codificado como una cadena de 32 dígitos hexadecimales de longitud.
guid
utiliza una cadena GUID generada por la base de datos en MS SQL Server y MySQL.
nativo
selecciona identidad, secuencia o hilo dependiendo de las capacidades de la base de datos subyacente.
asignado
permite que la aplicación asigne un identificador al objeto antes de que se llame a save (). Esta es la estrategia predeterminada si no se especifica ningún elemento.
Seleccione
recupera una clave primaria, asignada por un disparador de la base de datos, seleccionando la fila por alguna clave única y recuperando el valor de la clave primaria.
exterior
utiliza el identificador de otro objeto asociado. Por lo general, se usa junto con una asociación de clave primaria.
identidad de secuencia
una estrategia de generación de secuencia especializada que utiliza una secuencia de base de datos para la generación de valor real, pero combina esto con JDBC3 getGeneratedKeys para devolver el valor de identificador generado como parte de la ejecución de la instrucción de inserción. Esta estrategia solo es compatible con los controladores Oracle 10g destinados a JDK 1.4. Los comentarios sobre estas declaraciones de inserción están deshabilitados debido a un error en los controladores de Oracle.
Si está construyendo una aplicación simple con pocos usuarios concurrentes, puede optar por incremento, identidad, hilo, etc. Estos son simples de configurar y no necesitan mucha codificación dentro de la base de datos.