Tutti i generatori implementano l'interfaccia org.hibernate.id.IdentifierGenerator. Questa è un'interfaccia molto semplice. Alcune applicazioni possono scegliere di fornire le proprie implementazioni specializzate, tuttavia, Hibernate fornisce una gamma di implementazioni integrate. I nomi delle scorciatoie per i generatori incorporati sono i seguenti:
incremento
genera identificatori di tipo long, short o int che sono univoci solo quando nessun altro processo sta inserendo dati nella stessa tabella. Non utilizzare in un cluster.
identità
supporta colonne Identity in DB2, MySQL, MS SQL Server, Sybase e HypersonicSQL. L'identificatore restituito è di tipo long, short o int.
sequenza
utilizza una sequenza in DB2, PostgreSQL, Oracle, SAP DB, McKoi o un generatore in Interbase. L'identificatore restituito è di tipo long, short o int
hilo
utilizza un algoritmo hi / lo per generare in modo efficiente identificatori di tipo long, short o int, data una tabella e una colonna (per impostazione predefinita hibernate_unique_key e next_hi rispettivamente) come fonte di valori hi. L'algoritmo hi / lo genera identificatori che sono univoci solo per un particolare database.
seqhilo
utilizza un algoritmo hi / lo per generare in modo efficiente identificatori di tipo long, short o int, data una sequenza di database denominata.
uuid
utilizza un algoritmo UUID a 128 bit per generare identificatori di tipo stringa che sono univoci all'interno di una rete (viene utilizzato l'indirizzo IP). L'UUID è codificato come una stringa di 32 cifre esadecimali di lunghezza.
guid
utilizza una stringa GUID generata dal database su MS SQL Server e MySQL.
nativo
seleziona identità, sequenza o hilo a seconda delle capacità del database sottostante.
assegnato
consente all'applicazione di assegnare un identificatore all'oggetto prima che venga chiamato save (). Questa è la strategia predefinita se non viene specificato alcun elemento.
Selezionare
recupera una chiave primaria, assegnata da un trigger di database, selezionando la riga da una chiave univoca e recuperando il valore della chiave primaria.
straniero
utilizza l'identificatore di un altro oggetto associato. Di solito viene utilizzato insieme a un'associazione di chiave primaria.
sequenza di identità
una strategia di generazione di sequenze specializzata che utilizza una sequenza di database per la generazione del valore effettivo, ma la combina con getGeneratedKeys JDBC3 per restituire il valore dell'identificatore generato come parte dell'esecuzione dell'istruzione di inserimento. Questa strategia è supportata solo sui driver Oracle 10g destinati a JDK 1.4. I commenti su queste istruzioni di inserimento sono disabilitati a causa di un bug nei driver Oracle.
Se stai costruendo una semplice applicazione con pochi utenti simultanei, puoi scegliere increment, identity, hilo ecc. Questi sono semplici da configurare e non hanno bisogno di molto codice all'interno del db.