Umfang und Grenzen
Version 1.0 für PostgreSQL 14+ und Hibernate ORM 7.4, mit bewusst engem Umfang. Was außerhalb liegt, wird mit Meldung abgelehnt, nie geraten.
Was abgebildet werden kann
Entities mit den üblichen Basistypen und allem, was Hibernate üblicherweise darum herum erzeugt.
Was der Executor plant
Er legt an, benennt um, fügt hinzu und verbreitert. Verbreitern heißt: ein längeres VARCHAR, INTEGER zu BIGINT oder eine größere NUMERIC-Präzision bei gleicher Skala.
Ohne Entscheidung
Anlegen, umbenennen, hinzufügen, verbreitern; Indizes und Unique-Keys ersetzen und löschen.
Mit Freigabe
Löschen, Zurückbenennen, Zurücksetzen und das Löschen eines Unique-Keys, dessen Spalten bleiben.
Mit Meldung
Arrays, Collections in Embeddables, jede andere Typänderung, Primärschlüsseländerungen.
Large Objects und JSON-Dokumente
Zwei Abbildungen verhalten sich anders, als ihre Annotationen vermuten lassen.
Hibernate speichert @Lob, Blob und Clob auf PostgreSQL als Large Objects in oid-Spalten. PostgreSQL löscht sie nicht mit ihrer Zeile. Führe regelmäßig vacuumlo aus; der Trigger lo_manage ist keine Option, weil der Executor Trigger auf verwalteten Tabellen ablehnt.
@JdbcTypeCode(SqlTypes.JSON) bildet einen Wert auf eine jsonb-Spalte ab; auf einer @Embedded-Property wird das ganze Embeddable ein Dokument. Ein Enum oder eine Pflicht-Property darin bräuchte einen Tabellen-Check, den das Modell nicht darstellen kann, und wird abgelehnt.
Sechs sbt-Projekte
Paketwurzel com.anjunar.hibernateddl. Der Kern hängt weder von Hibernate noch von einem Datenbanktreiber ab.
- schema-core
- Modell, Validierung, Diff, Operationen.
- schema-hibernate
- @SchemaId und HibernateSchemaSource.
- schema-executor
- Transaktion, Planung gegen das gespeicherte Modell, Historie, Vorschau.
- schema-postgresql
- SQL, Katalogprüfungen, Sperren und Historie für PostgreSQL.
- schema-integration
- HibernateSchemaMigration und der zuschaltbare Integrator.
- schema-cli
- Demo und der lesende Vorschau-Befehl. Nicht veröffentlicht.