2012-07-04 12 views
9

È buona norma prendere le entità di ibernazione fino al livello di presentazione? oppure È necessario mappare tutte le proprietà delle entità a un oggetto valore e l'oggetto valore verrà utilizzato per l'interfaccia utente?Hbernate DTO e mappatura oggetti valore

Per favore fatemi sapere i vantaggi e gli svantaggi di entrambi gli appoach.

Quando dovremmo usare cosa?

+1

DTO e oggetti valore sono la stessa cosa. DTO significa * Oggetto di trasferimento dati *. Un oggetto Hibernate persistente è chiamato * entità *. –

risposta

13

quelli che chiamate DTO sono entità in ORM. Di solito fanno parte di un modello di dominio che contiene la logica aziendale e contengono la maggior parte delle volte più dati di quanto è necessario per il rendering delle singole visualizzazioni. La mia regola personale empirica

Utilizzare entità in Vista quando non c'è strato di trasferimento tra il DAL e la vista e c'è poco logica di business:

  • Vantaggi:
    • un modello
    • non è necessario eseguire la mappatura tra i modelli
    • più facile utilizzo del caricamento lazy
  • Svantaggi:
    • ogni cambiamento del modello significa cambiamento dei punti di vista
    • molti disadvatages con strato di trasferimento vedi sotto

Mappa coloro ai DTOs quando c'è uno strato di trasferimento e/o il viewdata differisce dalle entità o aggrega molte entità diverse

  • Vantaggi:
    • DTOs/vista non dovete cambiare quando ci sono modifiche ai modelli
    • evitare l'invio di enti sopra il filo che ha un sacco di problemi (eccezioni pigro carico, molti dati non necessari inviati, esporre informazioni sensibili,. ..)
    • Il modello ha meno responsabilità (serializzazione) che ne semplificano il riutilizzo (ad es. elaborazione backend)
  • Svantaggi:
    • più classi di scrivere
    • codice da tradurre entità a DTOS
0

Si può anche guadagnare un po 'più di prestazioni e l'utilizzo della RAM efficienza se esponi le tue entità attraverso diversi livelli e moduli. dipende totalmente da te quale strada da percorrere, ma non ho mai visto applicazioni aziendali o di media dimensione che espongano entità al di là del loro progetto/livello del servizio dati.

Problemi correlati