Ich schreibe eine Spring (4.1.7) -Webanwendung, die einen REST-fähigen Dienst verfügbar macht und DTO- "Ressourcen" -Objekte für die Kommunikation zwischen Controller und Client-Browser verwenden möchte, anstatt meine Persistenz-Entitäten freizulegen.Spring DTO-DAO (Ressourcen - Entity) Mapping geht in welche Anwendungsschicht: Controller oder Service?
Derzeit ist die Anwendung hat die folgenden Schichten:
- Ansicht (JSP/JSON)
- Controller (s)
- DAO (
@Service
) - DAO (
@Repository
)
Meine Frage ist, wo sollte ich meine DAO-Entitäten zu DTO-Ressourcen zuordnen? Ich habe mir einige Beispiele angesehen, die Spring HATEOAS
verwenden, und sie zeigen Resource
Objekte, die ResourceSupport
erweitern, die in dem Controller
zugeordnet werden. Ist dies der beste Weg, oder sollte ich Ressourcen vom DAO-Dienst zurückgeben?
Ich wünsche Link
Elemente der zurück Ressource (für sich selbst und den dazugehörigen Ressourcen) hinzuzufügen, kann aber nicht sehen, wie Link
Elemente in der Service
wenn verarbeitet aufgelöst werden würde, ohne es zu Wissen über die Controller
mit und es ist @RequestMapping
. Auf der anderen Seite weiß ich nicht, ob es eine gute Übung ist, die Controller
mit dem Mapping zu verwischen.
Schlägst du vor, dass ich tatsächlich drei parallele Modelle implementieren sollte: DAO (z. B. 'OrderDao'), DTO (z. B.' OrderPlacedTo') und Resource (z. B. 'OrderPlacedResource')? Dies betrifft meine Bedenken, dass der Dienst Controller-fähig ist (und umgekehrt), aber wenn das Datenmodell wächst, könnte dies außer Kontrolle geraten. – Tiksi