Ich habe ein cleveres Programm, das eine Datei, die sehr spezifische Metadaten einer Datenbank enthält, ein ganzes Projekt für mich in Eclipse generiert. Es verwendet Hibernate für den Zugriff auf die Datenbank und bietet grundlegende Crud-Funktionalität sowie bietet XHTML-Schnittstelle.Design-Problem mit Seam
Es funktioniert alles gut und praktisch alles kann getan werden, solange einfache Operationen erforderlich sind. Natürlich erwarte ich, dass ich früher oder später dieses Projekt modifizieren muss, um ein individuelles Verhalten zu erreichen.
Ich könnte nur das Projekt ändern und nie zurückblicken, aber ich würde den enormen Vorteil verlieren, das Projekt neu erstellen zu können, um neue Tabellen und Verhaltensweisen hinzuzufügen. Obwohl ich mit meinen Änderungen ein neues Projekt generieren und diese Änderungen manuell übernehmen könnte, würde ich dies nicht für jede Änderung, die ich machen muss, tun müssen.
Leider kann das Werkzeug, das dieses Projekt generiert, nicht berührt werden (aus Gründen, dass es nicht unser Werkzeug ist, sondern ein Werkzeug eines Drittanbieters, das Projektvorlagen erstellt).
Ich bemerkte, dass es stark das Seam-Framework verwendet, um generierte Klassen zu instanziieren (mit @In(create = true)
). Gibt es trotzdem eine generierte Klasse so zu erweitern, dass das Regenerieren vorhandener Klassen meine Änderungen nicht überschreibt, und stattdessen diese erweiterten Klassen instanziiert werden?
Gibt es eine Strategie, die ich verwenden kann, um Änderungen an generierten Klassen zu minimieren (idealerweise wäre es, Verhalten einfach durch Hinzufügen von Dateien zum Projekt zu ändern, obwohl mir klar ist, dass dies für xhtml-Dateien nicht möglich wäre)? Jede Hilfe wäre willkommen, obwohl mir klar ist, dass einige Änderungen am Werkzeug vorgenommen werden müssen, bevor dies möglich wäre (zum Beispiel eine Fabrik?).
Klingt sehr ähnlich wie Naht-gen. Benutzt du das? –
Ziemlich wahrscheinlich, obwohl ich nicht sicher sagen kann. Ich hatte gerade den Crash-Kurs vor ein paar Tagen und mir fehlen noch viele Details darüber, wie es funktioniert. – Neil