Hibernate DDL Manager
Kontrollierte Schemaentwicklung auf Basis von Hibernate-Metadaten.
Die Idee
Ein Scala-3-Framework, das Hibernate-Mappings vor dem Start der SessionFactory mit der Datenbank vergleicht. Stabile Schema-IDs helfen, Umbenennungen zu erkennen und potenziell destruktive Änderungen ausdrücklich freizugeben.
Was es kann.
Schema-Vergleich
Änderungen aus Hibernate-Metadaten und dem aktuellen Datenbankschema ableiten.
Umbenennungen erkennen
Stabile IDs unterscheiden eine Umbenennung von Löschen und Neuanlegen.
Explizite Freigabe
Änderungen außerhalb des unterstützten Umfangs werden abgelehnt statt geraten.
Installation
libraryDependencies += "com.anjunar.hibernateddl" %% "schema-integration" % "1.0.0"
Paket: com.anjunar.hibernateddl:schema-integration
Direkt loslegen.
schema-integration einbinden und verwalteten Entities und Feldern stabile @SchemaId-Werte zuweisen.
Stabile IDs machen Umbenennungen erkennbar
Der Spaltenname kann sich ändern, während die Schema-ID gleich bleibt. Der Plan erkennt eine Umbenennung statt Löschen und Neuanlegen.
@Entity
@SchemaId("7f3a9c21")
@Table(name = "customer")
class Customer:
@Id @SchemaId("0a1b2c3d")
var id: java.lang.Long = uninitialized
@SchemaId("f34e45b6")
@Column(name = "nick_name")
var nickName: String = uninitialized
// Rename nick_name to alias; keep its @SchemaId.
// Planned SQL: ALTER TABLE "public"."customer"
// RENAME COLUMN "nick_name" TO "alias";Vor dem Start prüfen
Den Plan ohne Datenbankänderung prüfen und die Migration vor der SessionFactory ausführen.
val metadata = MetadataSources(registry) .addAnnotatedClass(classOf[Customer]) .buildMetadata() val report = HibernateSchemaMigration.preview( metadata, dataSource, previewOptions = PreviewOptions(dataChecks = DataChecks.Existence) ) println(PreviewRendering.text(report)) HibernateSchemaMigration.migrate(metadata, dataSource) val sessionFactory = metadata.buildSessionFactory()
Bewusst gestaltet.
Die Integration läuft vor dem Aufbau der SessionFactory. Sie protokolliert die Schemahistorie und führt nur unterstützte PostgreSQL-Änderungen aus.
Mach es zu deinem Werkzeug.
Weiter entdecken.
Scala.js UI
Ein Scala-3- und Scala.js-UI-Framework für serverseitig gerenderte Anwendungen.
↗JSON Mapper
JSON-Mapping für bestehende Objektgraphen und Domänenmodelle.
↗Scala Universe
Eine aufgelöste Sicht auf JVM-Typen, Generics und Annotationen.
↗Scala JS Ember
Ein modularer Rich-Text-Editor auf Basis eines unveränderlichen Dokumentmodells.
↗Scala Reflect
Zur Compile-Zeit erzeugte Typmetadaten für JVM und Scala.js.
↗