Wie man richtig mit Struts ActionForms, Value-Objekte und Entitäten?

Habe ich geerbt, eine große Java-Anwendung, die verwendet Struts, Spring und Hibernate. Die Klassen und Schnittstellen, die ich täglich sind: Struts-Actions, Struts ActionForms, Value-Objekte, Service-Schnittstellen und Implementierungen, DAO-Schnittstellen und Implementierungen, und die Entitäten. Ich bin mir ziemlich deutlich auf, wie und warum die meisten, außer ich bin unsicher über die richtige Trennung der Zuständigkeiten zwischen den ActionForms, Value-Objekte und Entitäten. Ich sollte auch erwähnen, dass das Domain-Modell (z.B. alle Elemente) enthalten nicht viel (wenn überhaupt) echte business-Logik. Dies ist im wesentlichen eine CRUD-app und die meisten der wirklichen Logik in der Datenbank (igitt!). Sowieso, es gibt mehrere verschiedene Java-bezogene Probleme, die ich überlege:

1) es scheint, Es ist nicht viel Unterschied zwischen den Entitäten und Value Objects (VOs), und eine Menge code geschrieben werden muss, um Transformation in die andere, wenn Sie durch die service-Schicht in beiden Richtungen (Struts-Aktionen befassen sich nur mit VOs, DAOs befassen sich nur mit Personen). So, VOs und Personen scheinen etwas redundant. Warum haben Sie beide?

2) Wo sollte die VO<->Person-übersetzung-code gehen? Die service-Schicht, die Person, die VO?

3) VOs sind direkt in ActionForms und direkt gebunden-tags in der JSP (zB ). Ist das eine gute Praxis? Wenn nicht, was ist das passende design?

4) Es ist unklar, wie man richtig zu behandeln Fremdschlüssel-Abhängigkeiten in der Wert-Objekte. Zum Beispiel, bestimmte VOs haben ein Typ-Feld, das in der Datenbank-Terminologie stellen eine foreign key-Beziehung in eine Art Tabelle. In der Benutzeroberfläche übersetzt diese in ein dropdown-Feld, das ermöglicht dem Benutzer, wählen Sie den Typ, ODER ein label, das zeigt einfach die textuelle Darstellung der Art (je nachdem, auf welchem Bildschirm es ist). Nun, sollte der VO-eine Eigenschaft, die für die Typ-ID, die textliche Darstellung der Art, oder beide? Wer ist verantwortlich für die übersetzung zwischen den beiden, und Wann?

5) Die VOs haben ein Feld für Ihre Datenbank-ID. Ich dachte VOs nicht Identitäten haben? Was ist mit dieser?

Ich hoffe, diese Fragen sind allgemein genug, um die von allgemeinem Interesse sein. Es scheint, dass das kommen würde, die ganze Zeit in dieser Art von Architektur.

Außerdem habe ich den Verdacht, dass diese Architektur ist zu schwer für diese app, und wenn Sie haben Vorschläge für eine bessere, go ahead. Aber ich bin vor allem daran interessiert, die Antwort auf die obigen Fragen, da eine andere Architektur ist eine langfristige Umgestaltung, die kann ich nicht jetzt tun.

InformationsquelleAutor thvo | 2008-10-03
Schreibe einen Kommentar