Zum Inhalt springen
Anjunar/ DOCS

Vorschau

Sieh vor einem Deployment, was der nächste Start mit einer Datenbank täte, ohne Schema, Daten oder Historie zu ändern.

Aus Code

Derselbe Plan, nur lesend

preview plant mit denselben Regeln, Optionen und Backfills wie migrate, in einer lesenden REPEATABLE-READ-Transaktion. Es nimmt keine Migrationssperre und führt kein DDL aus; eine Rolle mit Leserechten genügt.

scala
import com.anjunar.hibernateddl.executor.{DataChecks, PreviewOptions, PreviewRendering} import com.anjunar.hibernateddl.integration.HibernateSchemaMigration val report = HibernateSchemaMigration.preview(metadata, dataSource, previewOptions = PreviewOptions(dataChecks = DataChecks.Existence, includeExactCounts = false)) println(PreviewRendering.text(report)) // or PreviewRendering.json(report)
Ausgabe
Result: READY for the state read Mode: Migration Revision: 5 Target fingerprint: 9d4c1e7a52b8f03c6e1d9a47b2c85f10e3a6d7c94b1f2e08c5a3d6b9e7f40c21
Bericht

Schritte, Freigaben, Sperren und Prüfungen

Der Bericht nennt den Modus, die Schritte in Ausführungsreihenfolge mit ihrem SQL, benötigte und fehlende Freigaben, die Sperren der Migration und Befunde mit stabilen Codes.

Ready
Ein vollständiger Plan ohne Blocker, alle nötigen Prüfungen bestanden.
Blocked
Ein Blocker wurde gefunden: eine fehlende Freigabe, Drift oder Daten, die eine Bedingung verletzen.
Incomplete
Kein Blocker, aber eine Prüfung offen: Zeitüberschreitung oder fehlendes Recht. Gilt nie als bereit.

Datenprüfungen laufen auf den Zeilen, wie sie sind, mit den Werten der Migration hochgerechnet: verbleibende NULLs in einer künftigen Pflichtspalte, Duplikate für einen Unique-Key, fehlende Zeilen für einen Fremdschlüssel, Zeilen, die einen Check verletzen.

Kommandozeile

Ohne die Klassen der Anwendung

exportTarget und exportBackfills schreiben Ziel und Backfills als JSON. Die CLI erstellt die Vorschau aus diesen Dateien.

scala
Files.writeString(Path.of("target-schema.json"), HibernateSchemaMigration.exportTarget(metadata)) Files.writeString(Path.of("backfills.json"), HibernateSchemaMigration.exportBackfills(metadata))
shell
export HIBERNATE_DDL_PREVIEW_JDBC_URL=jdbc:postgresql://db:5432/app export HIBERNATE_DDL_PREVIEW_USER=reader HIBERNATE_DDL_PREVIEW_PASSWORD=... sbt "schemaCli/run preview --target target-schema.json --backfills backfills.json --format json"
0
Bereit.
1
Blockiert.
3
Unvollständig.
2
Ungültiger Aufruf oder technischer Fehler.
Eine bereite Vorschau erlaubt nichts

Die Migration prüft alles erneut unter ihren Sperren. Eine Datenbank, die sich nach der Vorschau geändert hat, stoppt den Start trotzdem.