Alle Generatoren implementieren die Schnittstelle org.hibernate.id.IdentifierGenerator. Dies ist eine sehr einfache Schnittstelle. Einige Anwendungen können ihre eigenen spezialisierten Implementierungen bereitstellen, Hibernate bietet jedoch eine Reihe von integrierten Implementierungen. Die Kontextnamen für die Einbau-Generatoren sind wie folgt:
Inkrement
Identifikatoren vom Typ erzeugt lange, kurze oder int, die nur einmalig sind, wenn kein anderer Prozess werden Daten in der gleichen Tabelle eingefügt wird. Verwenden Sie nicht in einem Cluster.
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.
Sequenz
verwendet eine Sequenz in DB2, PostgreSQL, Oracle, SAP DB, McKoi oder ein Generator in Interbase. Die zurückgegebenen Identifikator ist vom Typ lange, kurze oder int
hilo
verwendet einen Hallo/lo-Algorithmus, um effizient Identifikatoren vom Typ zu erzeugen lang, kurz oder int, gegeben eine Tabelle und die Spalte (standardmäßig hibernate_unique_key und next_hi) als Quelle von Hi-Werten. Der hi/lo-Algorithmus generiert Kennungen, die nur für eine bestimmte Datenbank eindeutig sind.
seqhilo
verwendet ein hallo/lo Algorithmus effizient Identifikatoren vom Typ zu erzeugen lang, kurz oder int, eine benannte Datenbanksequenz gegeben.
UUID
verwendet einen 128-Bit-UUID Algorithmus Identifikatoren vom Typ String zu erzeugen, die in einem Netzwerk eindeutig sind (die IP-Adresse verwendet wird). Die UUID ist als eine Zeichenfolge von 32 hexadezimalen Ziffern in der Länge codiert.
guid
verwendet eine Datenbank generierte GUID-Zeichenfolge auf MS SQL Server und MySQL.
nativen
wählt Identität, Sequenz oder hilo abhängig von den Fähigkeiten der zugrunde liegenden Datenbank.
zugewiesen
ermöglicht die Anwendung eine Kennung, bevor speichern zu dem Objekt zuweisen() aufgerufen wird. Dies ist die Standardstrategie, wenn kein Element angegeben ist.
wählen
einen Primärschlüssel abruft, durch einen Datenbank-Trigger zugeordnet ist, indem die Zeile durch einen eindeutigen Schlüssel auswählt und den Primärschlüsselwert abruft.
Fremd
verwendet die Kennung eines anderen zugeordneten Objekts. Es wird normalerweise in Verbindung mit einer Primärschlüsselzuordnung verwendet.
Sequenz-Identität
eine spezielle Sequenz Erzeugungsstrategie, die eine Datenbank-Sequenz für die tatsächliche Wert Generation nutzt, sondern kombiniert diese mit JDBC3 getGeneratedKeys den erzeugten Kennungswert als Teil der Einsatz der Ausführung der Anweisung zurückzukehren. Diese Strategie wird nur für Oracle 10g-Treiber unterstützt, die auf JDK 1.4 abzielen. Kommentare zu diesen INSERT-Anweisungen sind aufgrund eines Fehlers in den Oracle-Treibern deaktiviert.
Wenn Sie eine einfache Anwendung mit nicht viel gleichzeitigen Benutzern erstellen, können Sie für Schritt gehen, Identität, hilo etc .. Diese sind einfach zu konfigurieren und nicht viel Codierung innerhalb der db benötigten.
Vielen Dank für Ihre Antwort. Ich habe die Dokumente bereits angesehen. Ich suche jedoch, warum Leute etwas wie hilo und seqhilo verwenden würden. Wann treffen wir diese Entscheidung? Was sind die Anwendungsfälle für Select. –
Wenn etwas so einfach wie Sequenz oder Guid ist, was kann ein Entwickler verlangen, andere Wege zu wählen. –
Ich habe meine Antwort aktualisiert. Tatsächlich ** Inkrement, Identität, hilo ** etc .. sind einfacher. aber sie sind nicht für Unternehmensanwendungen geeignet. Es ist kein Problem, alle Optionen beizubehalten, aber stellen Sie sicher, dass Sie das für Sie am besten geeignete verwenden! – ManuPK