Zum Inhalt springen
Anjunar/ DOCS

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.

Abbildung

Was abgebildet werden kann

Entities mit den üblichen Basistypen und allem, was Hibernate üblicherweise darum herum erzeugt.

Unterstützt
Basistypen, Enums, @Lob, JSON-Spalten (jsonb).
Generierte Schlüssel: UUIDs, Sequenzen, Identity-Spalten.
Vererbung mit allen drei Strategien.
@ManyToOne-, @OneToOne- und @ManyToMany-Assoziationen.
Element-Collections: Sets, Listen, geordnete Listen und Maps.
Sekundärtabellen, Unique-Constraints und Indizes.
Änderungen

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.

Geplant

Ohne Entscheidung

Anlegen, umbenennen, hinzufügen, verbreitern; Indizes und Unique-Keys ersetzen und löschen.

Freigegeben

Mit Freigabe

Löschen, Zurückbenennen, Zurücksetzen und das Löschen eines Unique-Keys, dessen Spalten bleiben.

Abgelehnt

Mit Meldung

Arrays, Collections in Embeddables, jede andere Typänderung, Primärschlüsseländerungen.

Sonderfälle

Large Objects und JSON-Dokumente

Zwei Abbildungen verhalten sich anders, als ihre Annotationen vermuten lassen.

@Lob hinterlässt Waisen

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.

JSON-Spalten halten Dokumente

@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.

Module

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.