Frage

Nach dem Hibernate: hbm2ddl.auto = update in der Produktion einiger Fragen entstanden . Zunächst einmal ist der Grund für die ich bin mit Hibernate ist Datenbank-Anbieter unabhängig (keine Notwendigkeit, 10 Versionen der „gleichen“ SQL-Abfrage zu schreiben, z. B. Tsql vs. SQL) sein.

Mein Problem erscheint, wenn es Zeit, um die Datenbankschemata (Produktionsumgebung) zu erstellen. Soweit ich habe zwei Alternativen sehen kann.

  1. hbm2dll = update
  2. reine SQL (DDL) Skripte.

Die erste Alternative ist oben in dem Gewinde breit diskutiert. Die zweite Alternative ist schlecht, weil das bedeutet, ich bin zurück zu meinem ersten Problem: „Do not SQL-Anweisungen erstellen möchten, die Datenbank-Anbieter abhängig sind“. (Diese Aussage könnte falsch sein, wenn „alle“ (die Datenbanken Atlast Unterstützung Hibernate) implementieren die DDL (die Teilmenge von SQL verwendet, für die Definition und die Struktur einer Datenbank zu prüfen.) gleich ist).

War es hilfreich?

Lösung

Sind alle Änderungen in der Entwicklung / staging-Modus und den Transfer und Ausführen von Skripts in der Produktion manuell (oder automatisch, aber lassen Sie sich nicht überwintern laufen sie). Die Skripte können einige tunning müssen seit hbm2ddl Update nicht alle Fälle abdecken.

In der Tat lasse ich nie Hibernate Lauf ddl gegen jede Datenbank. Ich benutze hbm2ddl Text zu generieren:

org.hibernate.tool.hbm2ddl.SchemaExport --config=hibernate.cfg.xml --text --format --delimiter=;

org.hibernate.tool.hbm2ddl.SchemaUpdate --config=hibernate.cfg.xml --text --format --delimiter=;

Andere Tipps

Normalerweise Tools, die die PPV-Schema-Dumps basiert auf SchemaExport-Tool, das nur die statischen Metadaten liest.

Es ist ein Maven / Gradle Plugin https://github.com/Devskiller/jpa2ddl die erzeugt das JPA-Schema. In beinhaltet alle Eigenschaften, namings Strategien, Benutzertypen usw.

Sie können auch automatische Schema-Migrationen zu generieren verwenden für Flyway .

Ich mag Hibernate (viel), und ich denke, es ist etwas unglaublich gute Qualität Code macht, aber ich würde nicht früher schalten Sie es auf einer Produktionsdatenbank lose als ich eine sehr gut erzogene Grizzlybär babysit lassen würde. Alles kann sich hervorragend für eine Weile gehen, aber die einen Vorfall, wo es geht schlecht wirklich schlecht.

Mein Vorschlag würde in einer Testumgebung sein, haben Hibernate Datenbankschemata erzeugen. diejenigen, die in einer Testumgebung testen. Dann nehmen Sie diese Skripte in der Produktionsumgebung und sie laufen. Beachten Sie die Spezifität gibt; selbst wenn die Tests fantastisch gelingen, würde ich immer noch nicht nur Hibernate erlaubt auf dem Produktionsserver zu gehen wild. Nehmen Sie die Ausgabe von Hibernate schemagen, testen, und sobald es bestätigt ist, dann einsetzen, dass auf dem Produktionsserver.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top