2010-02-15 12 views
6

Uso DataNucleus come implementazione JPA per memorizzare le mie classi nella mia applicazione web. Io uso un set di convertitori che hanno tutti toDTO() e fromDTO().Conversione entità a DTO con JPA

Il mio problema è che voglio evitare tutto il DB di essere inviati attraverso la rete:

  • se carico pigro, il convertitore cercherò di accedere a tutti i campi, e caricare poi (con conseguente molto caricamento avido).
  • Se non carico pigro, otterrò una parte enorme del DB, poiché l'utente contiene gruppi e gruppi contiene utenti e così via.

C'è un modo per caricare esplicitamente alcuni campi e lasciare gli altri come NULL nella mia classe caricata? Ho provato i documenti DataNucleus senza fortuna.

risposta

3

I tuoi DTO sono probabilmente troppo granulosi. non progettare di avere un DTO per entità JPA. Se devi usare DTO, rendili più grossi e costruiscili manualmente.

Recentemente abbiamo avuto l'intero "a DTO o non a DTO, che è la domanda" Discussione ANCORA. Il requisito per loro (specialmente nel contesto di un'app JPA) spesso non è più presente, ma uno degli argomenti FOR DTO tende a essere che la vista ha requisiti di dati più scadenti.

+0

Vuoi dire, una serie di DTO da utilizzare per ciascuna vista? Come un utente senza campo "gruppi" da inviare alla vista che non ha bisogno di conoscere i gruppi dell'utente e così via? – WhyNotHugo

+1

Dipende davvero dalla tua applicazione e da come la stai architettando. Parli del fatto che si tratta di un'applicazione Web, ma nello stesso tempo sei preoccupato per le cose inviate via cavo. Quale filo? Il cavo tra l'appserver e il database o il filo logico tra la vista e il livello modello/controller o il filo tra una chiamata AJAX del browser e il server? –

+1

Principalmente, il cavo tra browser e server, ma vorrei anche ridurre i dati del server DB <-> java trasmesso ... Immagino che il caricamento lazy e l'utilizzo di un dto per view funzioni, dal momento che quando si converte il modello in , Non accidentalmente caricherò i dati inutili e invierò solo ciò di cui ha bisogno la vista. È più lavoro (molte più lezioni) ma non vedo scelta. Grazie. – WhyNotHugo

Problemi correlati