Wie funktioniert genau Frühjahr.jpa.hibernate.ddl-Auto-Eigenschaft im Frühjahr?
eigentlich war ich arbeiten, mein Spring-boot-app-Projekt, und ich bemerkte, dass manchmal, es ist Zeit eine Verbindung zu meiner Datenbank auf einem anderen server(SQL-Server), vor allem, wenn ich versuchen zu tun, einige script-migration mit Zugrouten, aber es klappt nach mehreren versuchen. Ich bemerkte dann, dass ich nicht angeben, in der meine Eigenschaften Frühjahr.jpa.hibernate.ddl-auto. Ich habe dann einige der Forschung und festgestellt, dass es empfohlen hinzufügen
spring.jpa.hibernate.ddl-auto= create-drop
im Aufbau.
Und es zu ändern: spring.jpa.hibernate.ddl-auto= none
in der Produktion. Aber ich habe nicht wirklich verstanden, wie funktioniert es wirklich und wie funktioniert hibernate generieren, Datenbank-schema, mit der Schaffung von Wert oder mit keiner. Können Sie bitte erklären, technisch wie funktioniert es wirklich, und was sind die Empfehlungen mit dieser Eigenschaft in der Entwicklung-und Produktions-server.
Danke
InformationsquelleAutor der Frage METTAIBI | 2017-02-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die Aufzeichnung, die
spring.jpa.hibernate.ddl-auto
Eigenschaft ist Spring Data JPA-spezifisch und Ihre Weise einen Wert angeben, wird schließlich übergeben werden, Hibernate unter die Eigenschaft, die es kennt,hibernate.hbm2ddl.auto
.Die Werte
create
create-drop
validate
undupdate
im wesentlichen beeinflussen, wie die schema-tool-management, manipulieren die Datenbank-schema am Start.Beispielsweise die
update
operation wird die Abfrage der JDBC-Treiber-API, um die Metadaten der Datenbank und dann in den Ruhezustand vergleicht das Objekt-Modell erstellt, basierend auf der Lektüre Ihrer kommentierten Klassen-oder HBM-XML-Zuordnungen und wird versuchen, passen Sie die schema-on-the-fly.Den
update
Betrieb zum Beispiel wird versucht, das hinzufügen neuer Spalten, Einschränkungen, etc, aber nie entfernen einer Spalte oder Einschränkung, die existiert haben mag, bisher aber nicht mehr als Teil des Objekt-Modells aus dem vorherigen Lauf.In der Regel in test-case-Szenarios, werden Sie wahrscheinlich verwenden
create-drop
so dass Sie erstellen Ihr schema, Ihre test-Fall fügt einige mock-Daten, führen Sie Ihre tests, und dann während des test-case-Bereinigung, die schema-Objekte verworfen werden, verlassen Sie eine leere Datenbank.In der Entwicklung, ist es oft üblich, dass Entwickler verwenden
update
automatisch ändern Sie das schema zum hinzufügen von neuen Ergänzungen auf neu starten. Aber wieder verstehen, bedeutet dies nicht, entfernen Sie eine Spalte oder Einschränkung, die möglicherweise existieren, aus früheren Ausführungen, dass ist nicht mehr notwendig.In der Produktion, es wird oft empfohlen, die Sie verwenden
none
oder einfach nicht diese Eigenschaft angeben. Denn es ist gängige Praxis für DBAs Bewertung der migration-Skripte für die Datenbank-änderungen, vor allem, wenn Ihre Datenbank gemeinsam von mehreren Diensten und Anwendungen.InformationsquelleAutor der Antwort Naros