Instant Developer

Tips&Tricks: caricare documenti con query particolari

| 11 Giugno 2019 | Giuseppe Lanzi
instant developer creare documenti con query particolari Instant Developer

In entrambe le edizioni di Instant Developer una delle funzionalità più interessanti in assoluto è la Document Orientation, l’entity framework di Pro Gamma che segue i principi della AOP – Aspect Oriented Programming. Chi già conosce questo framework nell’edizione Foundation non avrà problemi ad approcciare la versione Cloud, perché i principi di funzionamento sono gli stessi e così anche il boost nei tempi di sviluppo, ma il piccolo trucchetto che voglio mostrarvi oggi sull’edizione Cloud potrebbe essere passato inosservato.

La prima e più facile semplificazione della DO è la capacità di caricare i documenti senza il bisogno di scrivere sempre la stessa query di caricamento in stile select * from [tabella] where [condizioni]. Questo è incredibilmente utile quando le condizioni di caricamento sono nella tabella che rappresenta il documento, ad esempio se nel database Nwind abbiamo la tabella Products e vogliamo caricare una lista di oggetti della classe Product che costano più di 10 €.

Per farlo è sufficiente utilizzare il metodo Document.loadCollection():

QDkSBlubo0sKybnwEnb8g2Ofl8Zw9aNZq2XWS700hcFKmACSD Instant Developer

Ma come fare per caricare rapidamente tutti i prodotti che hanno avuto un ordine nel 2019?

La condizione da verificare non risiede nella tabella dei prodotti ma nella tabella degli ordini: abbiamo bisogno di fare una join tra tabelle, una query manuale con la quale sia possibile aggiungere liberamente delle condizioni (magari a run-time) e poi convertire rapidamente il risultato in una Collection di Product.

Come far incontrare una query specifica con l’uso della DO?

Possiamo ricorrere ai metodi DataMap.prepare(), DataMap.filterBy(), DataMap.load() e DataMap.toCollection().

DataMap.prepare() ritorna un oggetto DataMap corrispondente al codice SQL passato a parametro, ma senza eseguire la query.

DataMap.filterBy() permette di aggiungere condizioni di filtro alla query, usando codice SQL libero e permettendo quindi qualsiasi condizione sia possibile scrivere con il database in uso.

DataMap.load() esegue la query utilizzando i filtri impostati con DataMap.filterBy() e popola l’oggetto DataMap con il risultato della query.

DataMap.toCollection() crea una collection di documenti della classe desiderata, a partire dai dati dell’oggetto DataMap stesso.

Usando questo codice è quindi possibile ottenere tutti i prodotti ordinati in un determinato anno. Questo perché prima prepariamo una query con tutte le join necessarie, poi impostiamo un filtro sulla tabella Orders, lontana da Products, e poi eseguiamo la query convertendo il risultato in una lista di oggetti Product.

v2K6RmkPLbnNeZ9pIsTsjQs Hur0P8xytdFSTOVGFGdeqmS8lMSrJotRaBR02z6rKeOH9QnN Instant Developer

Certo, questa implementazione è ancora embrionale, ma pensate a cosa potremmo fare con il metodo DataMap.filterBy() usato a run-time assieme alle informazioni della struttura del documento: potremmo implementare un metodo unico che dato un filtro complesso passato a parametro è in grado di trovare nel database i prodotti che corrispondono a diversi criteri di ricerca anche non dipendenti dalla tabella Products.

Se volete vedere il codice in azione, ho preparato per voi il progetto pubblico prepare-example. Lo trovate nella Console di Instant Developer Cloud.

Se volete sapere come si fa la stessa cosa con Instant Developer Foundation, vi basta verificare l’uso di select into collection.

Se poi questi tips&tricks vi piacciono e vi tornano utili e ne vorreste altri… restate con noi!

Giuseppe Lanzi
Technical Support Manager
Mi occupo di assistenza e consulenza tecnica, dei corsi di formazione e dei sistemi rivolti ai clienti. Amo la tecnologia e ogni tipo di nuovo gadget, mi interesso di fotografia e prendo al volo ogni occasione di scoprire un nuovo gioco.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Potrebbe interessarti

Instant Developer all’Evento Tech che apre il 2025

Mi chiamo Savino Carlone, per tutti sono solo “Savi” dalla nascita e sono una persona atipica per il mondo dell’informatica: preferisco la parte relazionale –...

Leggi Tutto

Instant Developer Foundation e Cloud 24.5: la prima volta insieme

Il rilascio delle versioni 24.5 di Instant Developer Foundation e Instant Developer Cloud rappresenta una grande novità: è la prima occasione in cui le due...

Leggi Tutto

Integrazione di librerie JavaScript per generare barcode

Scegliere il modo giusto per generare barcode non è semplice e la decisione che prendi può fare la differenza in termini di costi e praticità.Potresti...

Leggi Tutto

Rimani Aggiornato

Iscriviti alla nostra newsletter per ricevere aggiornamenti su novità, eventi, release, webinar e tante altre notizie sui prodotti Instant Developer.

    Presa visione dell'informativa (disponibile qui) resa da Pro Gamma SpA, acconsento al trattamento dei miei dati personali per l'invio di newsletter.*