Alle Generatoren implementieren die Schnittstelle org.hibernate.id.IdentifierGenerator. Dies ist eine sehr einfache Schnittstelle. Einige Anwendungen können ihre eigenen speziellen Implementierungen bereitstellen. Hibernate bietet jedoch eine Reihe integrierter Implementierungen. Die Verknüpfungsnamen für die integrierten Generatoren lauten wie folgt:
Zuwachs
generiert Bezeichner vom Typ long, short oder int, die nur dann eindeutig sind, wenn kein anderer Prozess Daten in dieselbe Tabelle einfügt. Nicht in einem Cluster verwenden.
Identität
unterstützt Identitätsspalten in DB2, MySQL, MS SQL Server, Sybase und HypersonicSQL. Der zurückgegebene Bezeichner ist vom Typ long, short oder int.
Reihenfolge
verwendet eine Sequenz in DB2, PostgreSQL, Oracle, SAP DB, McKoi oder einen Generator in Interbase. Der zurückgegebene Bezeichner ist vom Typ long, short oder int
Hilo
Verwendet einen Hi / Lo-Algorithmus, um Bezeichner vom Typ Long, Short oder Int effizient zu generieren, wobei eine Tabelle und eine Spalte (standardmäßig hibernate_unique_key bzw. next_hi) als Quelle für Hi-Werte angegeben werden. Der Hi / Lo-Algorithmus generiert Bezeichner, die nur für eine bestimmte Datenbank eindeutig sind.
seqhilo
verwendet einen Hi / Lo-Algorithmus, um Bezeichner vom Typ long, short oder int bei einer benannten Datenbanksequenz effizient zu generieren.
uuid
verwendet einen 128-Bit-UUID-Algorithmus, um Bezeichner vom Typ string zu generieren, die innerhalb eines Netzwerks eindeutig sind (die IP-Adresse wird verwendet). Die UUID wird als Zeichenfolge mit 32 hexadezimalen Ziffern codiert.
Guid
Verwendet eine von der Datenbank generierte GUID-Zeichenfolge unter MS SQL Server und MySQL.
einheimisch
Wählt Identität, Sequenz oder Hilo aus, abhängig von den Funktionen der zugrunde liegenden Datenbank.
zugewiesen
Ermöglicht der Anwendung, dem Objekt eine Kennung zuzuweisen, bevor save () aufgerufen wird. Dies ist die Standardstrategie, wenn kein Element angegeben ist.
wählen
Ruft einen Primärschlüssel ab, der von einem Datenbank-Trigger zugewiesen wurde, indem die Zeile anhand eines eindeutigen Schlüssels ausgewählt und der Primärschlüsselwert abgerufen wird.
fremd
verwendet die Kennung eines anderen zugeordneten Objekts. Es wird normalerweise in Verbindung mit einer Primärschlüsselzuordnung verwendet.
Sequenzidentität
Eine spezielle Strategie zur Sequenzgenerierung, die eine Datenbanksequenz für die tatsächliche Wertgenerierung verwendet, diese jedoch mit JDBC3 getGeneratedKeys kombiniert, um den generierten Bezeichnerwert als Teil der Ausführung der Einfügeanweisung zurückzugeben. Diese Strategie wird nur von Oracle 10g-Treibern unterstützt, die für JDK 1.4 vorgesehen sind. Kommentare zu diesen Einfügeanweisungen sind aufgrund eines Fehlers in den Oracle-Treibern deaktiviert.