2015-08-03 34 views
5

Ho una classe 'contenitore' con campi che sono contenuti in diverse tabelle di database e utilizzo il pattern DAO per accedere ai dati.Un DAO per classe 'contenitore' o un DAO per tabella?

La domanda è, dovrei creare un singolo DAO per questa classe 'contenitore', o è meglio avere un DAO per tabella e combinare i loro dati?

risposta

10

È necessario progettare il DAO in base alle esigenze dell'applicazione e non al layout del database. Inizia con un DAO, e se diventa troppo grande, quindi rifattalo in più DAO in un modo che ha senso per il tuo codice.

L'intero punto di un DAO è nasconde qualsiasi concetto di database (come tabelle) dall'applicazione. La tua applicazione dovrebbe semplicemente vederlo come un servizio con alcuni metodi utili.

Ad esempio, se l'applicazione richiede alcuni dati utente provenienti sia dalla tabella Users sia dalla tabella EmailAddresses, il codice dell'applicazione non deve coordinare due DAO: deve chiamare un metodo DAO getUserDetails() e DAO nascondere il fatto che è necessario chiamare più tabelle.

Sto raccomandando la prima delle opzioni nella domanda, ma non mi limiterò alla regola "una DAO per classe contenitore".