2017-06-04 1 views
4

Mein Datenbankhintergrund stammt aus dem Django-Framework (Python). In Django war der Einstieg in Datenbankmigrationen einfach: Django migrations. Das Django-Framework bietet Tools zum Erstellen der Migrationen basierend auf Ihren Modellen sowie ein Tool zum Anwenden der Migrationen auf Ihre Datenbank. Ich denke, diese Art zu arbeiten hat sowohl in der Entwicklung als auch in der Produktion funktioniert. Sie mussten keine Migrationen selbst schreiben, das Framework hat sie für Sie erstellt.Wie werden Datenbankmigrationen beim Spring Boot mit Hibernate behandelt?

Jetzt habe ich ein Projekt mit Spring Boot und Hibernate gestartet. Ich konfiguriere meine Anwendung, um Hibernate mit JPA zu verwenden. Mit diesen Einstellungen müsste ich jetzt wissen, wie mein Framework Datenbankmigrationen behandelt? Ich meine, wenn ich eine Spalte ändere, entweder ihren Typ, oder sogar entfernen kann, wie migriere ich dann die Datenbank zu der Änderung? Ich weiß, dass Spring Boot automatisch Spaltenänderungen beim Start erkennen und Spalten erstellen wird, die basierend auf den Modellen (Entity's) nicht existieren. Ich denke, es hat etwas mit variabler

spring.jpa.hibernate.ddl-auto

Aber zu tun, wie funktioniert es, die bestehenden Datenbankobjekte behandeln? Fügt sie auch die Spalte hinzu und mit welchem ​​Wert? Der Standardwert, den ich einstelle? Was passiert, wenn ich den Säulentyp ändere? Kann es dann mit der Änderung umgehen? Diese Einstellungen und das automatisierte Datenbank-Management mit Spring-Boot reichen auf lange Sicht wahrscheinlich nicht aus?

Was ich wissen möchte, ist das, was sind die besten Methoden zur Behandlung von Datenbankmigrationen mit Spring Boot und Ruhezustand Kombination? Ich glaube, es gibt einen Standard, wie die meisten Menschen mit dieser Kombination die Migrationen handhaben? Ich hoffe, es ist so einfach wie mit Django ... Ich weiß über Flyway, aber weiß nicht, ob ich es wirklich brauche, oder ob es viel mit dieser Kombination von mir verwendet wird (einschließlich Spring Boot und Winterschlaf).

+2

Ja, Flyway und liquibase sind beide gute Datenbankmigrationstools. Die Tatsache, dass Sie Frühling und Winterschlaf verwenden, ist wirklich irrelevant. Wenn Sie eine Datenbank migrieren müssen, sind sie eine gute Wahl. ddl-auto ist kein Datenbankmigrationstool. Es ist nur eine schnelle Möglichkeit, ein Schema von Grund auf neu zu erstellen und zu erstellen, IMHO. Nicht etwas, was ich jemals in der Produktion verwenden würde. –

Antwort

5

Liquibase oder Flyway sind die beiden Hauptoptionen für die Versionierung/Behandlung von Datenbankmigrationen. ddl-auto ist schnell und schmutzig, aber es berücksichtigt nicht alles, was behandelt werden muss. Es gibt auch die Möglichkeit von Rennbedingungen (zwei Instanzen versuchen gleichzeitig die DDL zu aktualisieren).

Diese Antwort geht ausführlicher über ddl-auto in einer Produktionsumgebung, und warum sollten Sie nicht.

Hibernate: hbm2ddl.auto=update in production?

https://www.credera.com/blog/technology-insights/java/liquibase-fed-inconsistent-schemas/ hat etwas mehr Informationen über die, warum/Konzepte.

Verwandte Themen