Frage

Ich bin daran interessiert, wie hibernate.hbm2ddl.auto = validate tatsächlich funktioniert und ich habe Schwierigkeiten eine umfassende Dokumentation zu finden.

Wir haben vor kurzem entdeckt Produktionssystem betroffen von http: // Open Source. atlassian.com/projects/hibernate/browse/HHH-3532 (Hibernate entspricht Fremdschlüssel auf Namen, anstatt Unterschrift und sie für Sie so neu) und hibernate.hbm2ddl.auto = Update wird von unserer nächsten entfernt Release.

würde ich ganz zufrieden sein, nur von hibernate.hbm2ddl.auto loszuwerden zusammen und unserer Datenbank selbst verwalten. Allerdings sind nicht alle meine Kollegen teilen diese Weltsicht und einige sind daran interessiert, wieder hinzufügen in hibernate.hbm2ddl.auto = Validieren.

Ich bin besorgt dies das gleiche Problem treffen wird, und ich bin interessiert weitere Dokumentation über die Suche nach, wie diese Validierung tatsächlich funktioniert. Die Hibernate Gemeinschaft Dokumentation ( http: // docs. jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html ) macht wirklich nur Bezug auf die Werte.

Hat jemand eine gute Dokumentation Zeiger haben, oder eine echte Lebenserfahrung Validate in einem Produktionssystem verwenden?

War es hilfreich?

Lösung

  

Ich bin besorgt dies das gleiche Problem treffen wird, und ich bin interessiert weitere Dokumentation über die Suche nach, wie diese Validierung tatsächlich funktioniert.

Meiner Meinung nach ist die beste Dokumentation ist der Quellcode, dass Sie überprüfen, um sehen können, was genau passiert ist. Die Methode ist org.hibernate.tool.hbm2ddl.SchemaValidator#validate().

Ich ging schnell durch den Code und I glaube nicht, dass der SchemaValidator prüft Fremdschlüssel in der Datenbank : es das Vorhandensein von Tabellen überprüft, Spalten, id-Generatoren aber keine Fremdschlüssel. Ein Test gegen eine Haustier-Datenbank scheint dieses Verhalten zu bestätigen: a. FK Einschränkung fällt nicht bricht Schema-Validierung (in anderen Worten, die Prüfung checkt ob die Anwendung ausgeführt werden kann, nicht für die referentielle Integrität)

Nun HHH-3532 markiert werden als feste, warum Sie nicht aktualisieren auf eine neuere Version von Hibernate oder, wenn die Version von Hibernate Wechsel zu schwer ist, warum Sie nicht den Patch für HHH-3532 selbst?

Mit allem, was gesagt, I nicht hibernate.hbm2ddl.auto=update zu aktualisieren Produktionsdatenbanken verwenden, verwende ich Change Scripts. Aber I Verwendung hibernate.hbm2ddl.auto=validate und ich bin zufrieden damit.

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