In un gateway Data Table, dove inserisco le query che utilizzano i join

3

Il modello di libro di Enterprise Application Architecture ha la seguente descrizione sul pattern Table Data Gateway:

"Un gateway dati tabella contiene tutti gli SQL per accedere a una singola tabella o vista: seleziona, inserisce, aggiorna ed elimina. Altro codice chiama i suoi metodi per tutte le interazioni con il database. "

Non dicono nulla sulle query che usano più tabelle. Dove devo inserire una query che utilizza più tabelle e genera un risultato che ha tanto in comune per ogni singola tabella?

    
posta Laurence 02.12.2014 - 08:07
fonte

1 risposta

6

Nonostante sia comparso in un libro scritto da Martin Fowler (per il quale ho dato molto rispetto), non riesco a capire perché si dovrebbe usare questo schema. Come hai capito, è piuttosto limitato in quanto molte operazioni aziendali richiedono l'accesso a più tabelle, e talvolta più fonti di dati (database, repository LDAP, ecc.). Una preoccupazione secondaria è la prestazione: è necessario fondere i join tra le tabelle a livello di Java. Quando sono coinvolte tabelle di grandi dimensioni, SQL lo farà in modo molto più elegante e veloce.

Penso che il pattern DAO (Data Access Object) sia molto più utile. L'interfaccia dovrebbe riflettere le azioni aziendali (ad esempio placeOrder (), shipOrder (), chargeCreditCard (), listOutstandingOrdersForCustomer (), ecc.) E dovrebbe nascondere il fatto che più transazioni / repository ecc. Sono coinvolti in una transazione. Questo aiuta anche i test, dato che puoi facilmente estirpare il database con il codice mock.

    
risposta data 02.12.2014 - 09:13
fonte