Un Data Access Object (DAO) è un modello di progettazione ampiamente adottato nel campo dell'architettura e dei modelli software, specificamente pensato per facilitare l'astrazione e l'incapsulamento dei processi di accesso e manipolazione dei dati. Impiegato nel contesto della programmazione orientata agli oggetti, l'obiettivo principale del modello DAO è separare la logica di accesso ai dati dalla logica aziendale separando il meccanismo di archiviazione dei dati sottostante e mappandolo su una rappresentazione orientata agli oggetti di livello superiore.
In genere, i DAO funzionano come un livello intermedio tra l'origine dati sottostante (come un database relazionale, un file XML o qualsiasi altro sistema di archiviazione) e le classi di dominio (note anche come oggetti o entità business) che gestiscono la logica aziendale principale del applicazione. Questa segregazione garantisce una migliore manutenibilità, testabilità e scalabilità dell'applicazione, poiché consente agli sviluppatori di modificare i meccanismi di archiviazione dei dati senza influenzare la logica complessiva dell'applicazione.
Il modello di progettazione DAO comprende diversi componenti chiave:
- Interfaccia: un'interfaccia che definisce i vari metodi di accesso e manipolazione dei dati richiesti dall'applicazione. Ciò costituisce il contratto tra l'implementazione dell'accesso ai dati e il resto dell'applicazione.
- Implementazione: l'implementazione concreta dell'interfaccia DAO, che contiene il codice responsabile dell'interfacciamento con lo specifico meccanismo di archiviazione dei dati e della traduzione dei dati in un formato compreso dalle classi del dominio. È possibile creare diverse implementazioni per supportare varie tecnologie di archiviazione dei dati.
- Origine dati: l'effettivo meccanismo di archiviazione dei dati che ospita i dati a cui accede e viene manipolato dall'applicazione, come un database relazionale o un sistema NoSQL.
- Oggetti dominio (business): oggetti business dell'applicazione, che interagiscono con il livello DAO per accedere e manipolare i dati richiesti per supportare la logica aziendale principale dell'applicazione. Questi oggetti in genere vengono mappati a tabelle o raccolte specifiche nell'origine dati sottostante.
Nel contesto della piattaforma no-code AppMaster, i DAO svolgono un ruolo fondamentale nel consentire agli sviluppatori e ai cittadini sviluppatori di creare rapidamente applicazioni scalabili, manutenibili e testabili senza la necessità di una conoscenza approfondita della codifica. Creando visivamente modelli di dati (schema di database) e logica di business tramite Business Process (BP) Designer, gli sviluppatori possono sfruttare la potenza dei DAO per generare API REST backend ed endpoints WSS che gestiscono in modo efficace i processi di accesso e manipolazione dei dati.
Gli utenti finali interagiscono con questi servizi di accesso ai dati astratti attraverso front-end di applicazioni web o mobili progettati visivamente, resi completamente interattivi e in grado di interfacciarsi direttamente con le API REST generate automaticamente. Le applicazioni create sulla piattaforma possono essere continuamente rigenerate ad ogni cambiamento dei requisiti, riducendo al minimo il debito tecnico e garantendo una qualità del codice costante. Inoltre, AppMaster supporta un'ampia gamma di opzioni di archiviazione dati, inclusi database compatibili con PostgreSQL, consentendo agli utenti di passare facilmente da un meccanismo di archiviazione all'altro senza influire sul livello di logica aziendale dell'applicazione.
AppMaster raggiunge questo elevato livello di scalabilità e flessibilità attraverso l'uso di Go (Golang) per generare il codice dell'applicazione backend e il framework Vue3 insieme a JavaScript/TypeScript per il codice dell'applicazione web. Per le applicazioni mobili, AppMaster utilizza Kotlin e Jetpack Compose per Android e SwiftUI per iOS. Ciò garantisce che le applicazioni generate siano veramente indipendenti dalla piattaforma e possano essere facilmente estese o modificate per piattaforme di destinazione specifiche.
In sintesi, il modello di progettazione DAO (Data Access Object) funge da elemento fondamentale nella creazione di sistemi software ben architettati, scalabili e manutenibili, in particolare nel contesto della programmazione orientata agli oggetti e delle applicazioni basate su database. Incapsulando e astraendo in modo efficace la logica di accesso e manipolazione dei dati, i DAO aprono la strada allo sviluppo di applicazioni agili e a prova di futuro. All'interno della piattaforma no-code AppMaster, i DAO sono determinanti nel consentire agli sviluppatori e ai cittadini sviluppatori di costruire visivamente applicazioni potenti e versatili senza impantanarsi nelle complessità dei paradigmi di programmazione tradizionali.