Zum Inhalt springen
Anjunar/ DOCS

Hibernate DDL Manager

Kontrollierte Schemaentwicklung aus Hibernate-Metadaten. Der Server migriert die Datenbank beim Start, und Umbenennungen bleiben Umbenennungen, weil jede Tabelle und Spalte eine stabile ID trägt.

1.0.1Aktuelle Version
JVMLäuft auf
Scala 3.9Sprachversion
MITLizenz

Installation

schema-integration bringt alle anderen Module mit. Hibernate ORM 7.4 und den PostgreSQL-JDBC-Treiber stellt die Anwendung.

sbt
libraryDependencies += "com.anjunar.hibernateddl" %% "schema-integration" % "1.0.1"
xml
<dependency> <groupId>com.anjunar.hibernateddl</groupId> <artifactId>schema-integration_3</artifactId> <version>1.0.1</version> </dependency>

Eine Umbenennung, kein Löschen

Entity und Properties tragen IDs. Benenne Feld und Spalte um, behalte die ID, und der nächste Start benennt die Spalte an Ort und Stelle um.

scala
import com.anjunar.hibernateddl.hibernate.annotation.SchemaId import jakarta.persistence.* import scala.compiletime.uninitialized @Entity @SchemaId("7f3a9c21") @Table(name = "customer") class Customer: @Id @SchemaId("0a1b2c3d") var id: java.lang.Long = uninitialized @SchemaId("f34e45b6") @Column(name = "alias") var alias: String = uninitialized // was nick_name
Ausgabe
ALTER TABLE "public"."customer" RENAME COLUMN "nick_name" TO "alias";

Einschalten

Drei Hibernate-Einstellungen schalten die Migration ein. Hibernate selbst darf danach nur noch validieren.

properties
hibernate.ddl_manager.enabled=true hibernate.hbm2ddl.auto=validate hibernate.default_schema=public
01 / Identität

Stabile IDs statt Namen

Acht zufällige Hex-Ziffern je Entity und Property, einmal vergeben. Namen dürfen sich ändern; die ID sagt, was gleich geblieben ist.

02 / Historie

Ein gespeichertes Modell statt Skripten

Jede Migration speichert ihr Zielmodell in der Datenbank. Der nächste Start plant dagegen, deshalb darf ein Server Versionen überspringen.

03 / Sicherheit

Ablehnen statt raten

Was Daten kostet, braucht eine Freigabe; was sich nicht planen lässt, wird mit Meldung abgelehnt. Geraten wird nichts.

Inhalt

Von der ersten ID bis zum laufenden Server

Beginne mit stabilen IDs und der Migration beim Start; die übrigen Seiten behandeln Änderungen, die eine Entscheidung brauchen.