Concetti DTO e DAO e MVC [chiuso]


133

1) Perché usiamo DTOe DAO, e quando dovremmo usarli. Sto sviluppando un GUIsoftware Java per inserire, modificare, eliminare i dati. Ma Ho difficoltà a distinguere tra DTO/DAOe Model, View, ControllerStruttura (MVC)? Sono simili, che è meglio usare quando si interagisce con il database tramite Java GUI.

2) Una cosa di cui sono davvero curioso è se è una buona pratica avere viewe Controllerin una classe. Se ci pensiamo Netbeans, è possibile creare GUIFrame Class e aggiungere componenti come JButtonsul frame, facendo doppio clic sul pulsante si accederà al actionListenermetodo (Controller) che sembra essere nel frame i dati devono essere visualizzati all'utente (Visualizza) . Quindi sono nella stessa classe. Allora è completamente contrario al concetto?

Ecco di cosa sto parlando

cattiva pratica avere vista e controller in una classe?


@RomanC ha una tabella di database che contiene Eventi (eventId, name, date.etc), quindi DTO e MVC, uguali o diversi?
Hoody,

Nel database non hai DTO ma oggetti di database.
Roman C

@RomanC nelle classi Java scusate, usando la struttura DTO / DAO o dovreste usare MVC? qual è la differenza
Hoody,

Leggere questo e che verificare la differenza
Romano C

hai letto del database al secondo def?
Roman C

Risposte:


269

DTOè un'abbreviazione per Data Transfer Object , quindi viene utilizzato per trasferire i dati tra classi e moduli dell'applicazione.

  • DTO deve contenere solo campi privati ​​per dati, getter, setter e costruttori.
  • DTO non è consigliabile aggiungere metodi di business logic a tali classi, ma è OK aggiungere alcuni metodi util.

DAOè un'abbreviazione di Data Access Object , quindi dovrebbe incapsulare la logica per il recupero, il salvataggio e l'aggiornamento dei dati nella memoria dei dati (un database, un file system, qualunque cosa).

Ecco un esempio di come sarebbero le interfacce DAO e DTO:

interface PersonDTO {
    String getName();
    void setName(String name);
    //.....
}

interface PersonDAO {
    PersonDTO findById(long id);
    void save(PersonDTO person);
    //.....
}

Il MVCè un modello più ampio. Il DTO / DAO sarebbe il tuo modello nel modello MVC.
Ti spiega come organizzare l'intera applicazione, non solo la parte responsabile del recupero dei dati.

Per quanto riguarda la seconda domanda, se hai una piccola applicazione è completamente OK, tuttavia, se vuoi seguire il modello MVC, sarebbe meglio avere un controller separato , che conterrebbe la logica di business per il tuo frame in una classe separata e inviare messaggi a questo controller dai gestori di eventi.
Ciò separerebbe la tua logica aziendale dalla vista.


2
Probabilmente ho capito male la domanda.
Petr,

4
Non sono sicuro di cosa intendi per "controller separato". Dalle mie letture, il controller in MVC dovrebbe essere il più magro possibile e la tua logica aziendale dovrebbe essere incapsulata nei tuoi modelli.
Paul Carlton,

4
Usare DTO per interfacciare il modello a oggetti è una pratica terribile. void save (persona PersonDTO) è puro cancro.
Ben

3
perché abbiamo bisogno di DTO quando abbiamo oggetti Class come POJO? non sono entrambi uguali?
Bhargav,

3
I DTO di @Bhargav vengono utilizzati per restituire risultati combinati di più entità (POJO) o risorse limitate da un'entità.
TheCoder
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.