Stabile IDs
Ein Name darf sich ändern, eine ID nie. Daran erkennt das Framework eine Umbenennung statt Löschen und Neuanlegen.
Hibernate sieht Namen, die Datenbank braucht Identität
Zwischen zwei Versionen einer Entity sieht eine umbenannte Spalte aus wie eine verschwundene und eine neue. Ohne Identität würde jede Umbenennung Daten löschen. @SchemaId gibt jeder Tabelle und Spalte eine Identität, die Umbenennungen übersteht.
Acht Hex-Ziffern, einmal, für immer
Eine ID besteht aus acht kleinen Hex-Ziffern, zufällig erzeugt. Entity-IDs sind über alle Entities eindeutig, Property-IDs innerhalb ihrer Entity.
Wie IDs Tabellen und Spalten benennen
Freigaben, Backfills und Fehlermeldungen sprechen Tabellen und Spalten über einen Pfad aus IDs an. Eine Tabelle nutzt die ID ihrer Entity, eine Spalte hängt die der Property an.
- 7f3a9c21
- Die Tabelle der Entity.
- 7f3a9c21/f34e45b6
- Eine Spalte dieser Tabelle.
- 7f3a9c21/3c4d5e6f/9a8b7c6d
- Eine Spalte eines eingebetteten Werts.
- 7f3a9c21/5b6c7d8e
- Eine Collection-Tabelle (Element-Collection oder Many-to-Many-Join-Tabelle) nimmt die ID ihrer Property.
Vererbung behält diese IDs: Eine Single-Table-Hierarchie teilt die Tabelle ihrer Wurzel, Joined- und Table-per-Class-Unterklassen haben eigene. Eine Join-Spalte ist eine Spalte wie jede andere.
Eine weitere ID pro Sekundärtabelle
@SecondaryTableId nennt die Tabelle wie @SecondaryTable. Um die Sekundärtabelle umzubenennen, ändere beide Namen und behalte den Wert.
Fehlende IDs stoppen den Start und schlagen eine vor
HibernateSchemaSource liest das Boot-Modell und meldet alle Probleme auf einmal. Eine fehlende oder ungültige ID kommt mit einem frisch erzeugten Vorschlag.