2010-11-25 19 views
2

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?).

+0

Klingt sehr ähnlich wie Naht-gen. Benutzt du das? –

+0

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

Antwort

1

Das klingt für mich wie Naht-Gen auch. Dies kann Ihnen helfen: http://seamframework.org/Community/ModifyingSeamgen

Ich mag nicht Naht-Gen. Es ist ein Shortcut-Tool mit einem Preis. Siehe diesen Beitrag http://shervinasgari.blogspot.com/2010/10/why-you-should-not-use-seam-application.html

Ich liebe Naht, aber ich benutze nicht/wie Naht-Gen. Naht-Gen passt nicht für reale Anwendungen.

Außerdem:

@In(create=true) BeanClass beanName 

spritzt eine Bohne mit dem Namen "BeanName" und geben Sie BeanClass, aus einem bestimmten Kontext. Wenn diese Bean noch nicht existiert, wird sie erstellt (weil create = true). Wenn es in einem Kontext existiert (Seite, Anfrage, Sitzung, App, Workflow, usw.), wird es gefunden und es wird in property beanName injiziert.

+0

Vielen Dank für das Feedback. Ja, bei den Geräuschen bin ich auch nicht so scharf auf diese Nahtstelle. Ah, vielleicht kann ich etwas in der Dokumentation finden. – Neil