Oggetto nel livello aziendale uguale a DTO con logica?

3

Diciamo che ho un progetto Spring MVC, nel quale sto usando DTO per ottenere dati da un database e per passare i dati all'interfaccia utente. Supponiamo di avere un UserDTO e nel mio livello aziendale devo fare qualcosa con questo, ma ho bisogno di inserire la logica nell'Utente e il modello DTO dice che non è consentita alcuna logica (o solo logica semplice).

Devo trasformare questo UserDTO in un oggetto User per avere la logica e quindi creare un UserDTO per darlo all'interfaccia utente? O semplicemente usi UserDTO e lo elabori nel livello aziendale?

Grazie

    
posta Luke SpringWalker 29.10.2014 - 17:05
fonte

1 risposta

3

Il tuo livello dati dovrebbe dare oggetti di dominio, non oggetti di trasferimento dati.

La query del database restituire User istanze di classe che class ospitano la logica del dominio. Il tuo servizio aziendale che chiama il livello dati dovrebbe essere dove devi fare i passi necessari per il tuo caso d'uso, come chiamare più oggetti di accesso ai dati e ottenere tutte le informazioni necessarie sul dominio, richiamare tutte le funzioni aziendali appropriate e infine mappare i dati nel tuo oggetto di trasferimento dati per il processo di rendering dell'interfaccia utente.

Esistono casi d'uso in cui il livello dati può restituire oggetti valore che potrebbero non essere necessariamente entità così come sono memorizzati nel datastore. Ad esempio, se si dispone di una tabella con un numero elevato di colonne ma si è interessati solo a un piccolo sottoinsieme delle colonne oa una vista specifica su più entità, è possibile che l'ORM restituisca un elenco di oggetti istanziati che non sono entità gestite. Questi oggetti valore sono spesso immutabili ma non necessariamente richiesti.

    
risposta data 29.10.2014 - 17:42
fonte

Leggi altre domande sui tag