# Wiederverwendbarkeit in JavaEE Anwendung



## RelaX (15. Dez 2015)

Hallo@all,

ich hab als Projektleiter nun die Aufgabe eine Art Shop zu bauen. Folgendes ging mir durch den Kopf. Die Idee: Ich baue Komponenten, welche sehr leicht integrierbar sind. Mich würde wirklich sehr sehr interessieren was ihr davon haltet.

Folgende Komponenten sollen nun vollständig unabhängig voneinander existieren:
Benutzersystem mit login, registrierung usw.
Ratingsystem.
Kommentarsystem.

Als Konvention setzen wir eine user_id fest, welche dann verwendet werden kann. Das soll auch die einzige Verbindung zwischen den Systemen darstellen.

Wenn ich jetzt mittels Beziehungen in den Objekten operiere, hab ich ja eigentlich kein System mehr, welches unabhängig voneinander existiert. Auch die Integration ist dann etwas schwierig und aufwändiger bei vielen verschiedenen Objekten. Daher kommen eigentlich nur Interfaces infrage.

Das würde allerdings bedeuten das ich einen eigenen OR-Mapper bauen muss. ODER ich arbeite doch mit Beziehungen.

Auf der einen Seite sehe ich durch die Verwendung von Interfaces ein klar abgrenzendes und leicht integrierbares System, welches auch funktioniert, solange ich das Interface verwende. Das würde wiederum einen eigenen OR-Mapper benötigen welchen ich aber dann ebenfalls ändern müsste!

Aber auf der anderen Seite könnte ich mir den OR-Mapper sparen. Dazu müsste ich bei jedem Objekt die Beziehungen pflegen.

Was würdet Ihr empfehlen?


----------



## Joose (15. Dez 2015)

Verwende Interfaces, mögliche Modelklassen wie zum Beispiel User oder Kommentar kannst du auch in eine eigene JAR auslagern und von mehreren Projekten verwenden.


----------



## RelaX (15. Dez 2015)

Ok. Nur kann ich da die view Elemente irgendwie ansteuern? Ich hab ja dann zur GUI Steuerung eine eigene xhtml-Datei die ich dann verwende und diesem Element einfach die Klasse, welche ja das Interface dann implementiert, übergebe. So sieht die xhtml aus die dann für die Steuerung zuständig ist.


```
<div class="rating_stars" data-classname="#{irateable.rateable_type}"
                               data-dimension="#{irateable.rateable_category}"
                               data-id="#{irateable.rateable_id}"
                               data-rating="#{ratingService.find_rateable_cache(irateable).rating}"
                               data-star-count="#{stars}" >
                               <div class="stars" style="float: left; margin-right: 7px;"></div>
                               <div class="counts">(#{ratingService.find_rateable_cache(irateable).rating_count})</div>
     </div>
```

Anhand der Daten steuert mein JQuery dann den zugriff, um welches Objekt von welchem Typ es sich genau handelt.


----------

