Frage

Ich bin derzeit mit Hibernate-Tool 3.1; I angepasst Konvention und DAO-Vorlagen zu benennen. Die Datenbank (SQL Server 2005) in der frühen Entwicklungsphase und ich bin verantwortlich für den Wiederaufbau der Zuordnungen, Organisationen, DAOs, Konfiguration, was auch immer. Jedes Mal, wenn ich an die Tische Reverse-Engineering und so verliere ich jede Anpassung ich auf die Zuordnungen gemacht (* .hbm.xml-Dateien) wie Einstellen der Identität Spalten, Kommissionierung die Felder, die in ist gleich und toString . Ich erwäge die diff XML in einer Datei zu schreiben und die „merge“, dass auf die generierte Mapping (siehe ), aber ich frage mich, ... gibt es ein best Practice / Werkzeug für den Umgang mit diesen lästigen, unvermeidlich, kritischen Aufgaben?

War es hilfreich?

Lösung

Ich würde dringend empfehlen, gegen kontinuierlichen Reverse Engineering. Reverse Engineering ist eine große einmalige Sache, aber Veränderungen müssen als Änderungen sowohl den hbm und die Datenbank verwaltet werden.

Wir verwenden Migrationen db Änderungen zu verwalten, und wir sind die damit verbundenen Veränderungen in der hbm. Wenn Hibernate hat (ich glaube, es tut), können Sie in Anmerkungen anstelle eines hbm aussehen, können sie durchaus sein, ein bisschen leichter zu pflegen.

Andere Tipps

Dies ist zweieinhalb Jahre zu spät, aber ich werde eine abweichende Meinung anbieten. Sie sollten alle Anpassungen, die Sie an die Mapping-Dateien durch die hibernate.reveng.xml Datei benötigen, um der Lage sein, oder eine benutzerdefinierte ReverseEngineeringStrategy. Für die Klassen selbst, sollten Sie immer generieren Klassen zu stützen und erweitern sie mit Klassen benutzerdefinierten Code enthalten.

Zum Beispiel erzeugen com.company.vo.generated.CustomerGenerated und erweitern sie mit com.company.vo.custom.Customer. Code-Generierung sollte alle Klassen in dem generierten Paket überschreiben, aber nie in dem benutzerdefinierten Paket (auch wenn Sie Hibernate Werkzeuge erzeugen diese benutzerdefinierten Klassen im Zielverzeichnis haben können, so dass Sie Paste Rohlinge in das benutzerdefinierten Verzeichnis kopieren und können je nach Bedarf). Auf diese Weise können Methoden für equals, toString, usw. in den benutzerdefinierten Klassen außer Kraft setzen können und die Änderungen nicht verlieren, wenn Sie zu regenerieren. Beachten Sie auch, dass die beste Praxis in generierten Code in SCM nicht mehr zu überprüfen ist.

Es gibt einige große Beispiele auf dieser Seite, wie dies mit Maven zu erreichen, die Hibernate3 Plugin, und die Build-Helfer-Plugin. Die meisten von ihnen haben eine sehr hilfreiche Antworten von Pascal Thivent. Diese Methode funktioniert sehr schön für mich, und während es ein bisschen eine Lernkurve ist dann ist es eine wunderbare Sache, in der Lage seiner Datenbank Änderungen an die App mit einem einzigen Befehl Maven.

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