Guida DBFlow : prima parte

Un elemento che ritengo essenziale per lo sviluppo delle mie applicazioni è una corretta organizzazione e gestione del Database. Estremamente importante è una gestione efficace, veloce e più automatica possibile.Creazione dei Data Transfer Object (dto),relativi controller sono dei compiti molto meccanici e ripetitivi, proprio per questo vi può essere una probabilità di errore nel crearli ed, essendo delle creazioni le quali la maggior parte delle volte sono ripetitive , è sempre meglio automatizzare tutto l’automatizzatile , evitando così molti errori “umani”.
Molte librerie di Object-relational-mapping (DTO) ci vengono in nostro soccorso. Queste librerie si occupano, oltre a gestire le varie connessioni al nostro database localesi assumono al responsabilità di automatizzare la creazione del database, tabelle e dto.
Un altra funzionalità che ritengo importantissima è il query builder, che permette di creare query per interrogare il DB ad “oggetti”,senza scrivere (ma comunque possibile come alternativa) nessuna query nativa.
Oggi analizzeremo una libreria che uso nella maggior parte dei miei progetti Android, la quale mi permette di perdere il meno tempo possibile durante la creazione della struttura/interfacciamento con il database, riuscendo così a concentrarmi su altri aspetti dello sviluppo .
Nel mondo Android esistono varie librerie ORM,in questo articolo vi parlerò di una in particolare che uso in tutti i miei progetti : DBFlow.
In questa parte descriverò come configurare il proprio progetto e il proprio database con DBFLow.

Configurazione Progetto

Per prima cosa è necessario aggiungere le dipendenze delle librerie di DBFLow.
Aggiungere al file build.gradle del progetto il relativo repository :
 
allprojects { 
    repositories { 
        maven { url "https://www.jitpack.io" } 
    } 
} 
Successivamente aggiungere la dipendenza al build.gradle dell’applicazione:
apply plugin: 'com.android.application'

def dbflow_version = "3.1.1"

dependencies {
    ...

    //DBFLow Dependenies
    compile "com.github.Raizlabs.DBFlow:dbflow-core:$dbflow_version}"
    compile "com.github.Raizlabs.DBFlow:dbflow:$dbflow_version}"
}

Per praticità, aggiungo ad inizio pagina la variabile che indica la versione di DBFLOW così, in caso di aggiornamento, non rischio di sbagliare non aggiornando tutti le relative dipendenze.

Dopo una sincronizzazione del progetto, siete pronti a poter usare la libreria!

Creazione e inizializzazione Database

Passiamo ora alla creazione del database, per la creazione del database, create una classe ,nel mio caso nominata “MainDatabase” , che si occuperà di configurare il proprio database:
MainDatabase.java
@Database(name = MainDatabase.DATABASE_NAME, version = MainDatabase.VERSION)
public class MainDatabase {

    public static final String DATABASE_NAME = "db_app";
    public static final int VERSION = 1;


    public static class General{
        public static final String COLUMN_NAME_ROW_ID = "rowID";
    }

    public static class Game{
        public static final String TABLE_NAME = "player";
        public static final String COLUMN_NAME_NAME = "name";
        public static final String COLUMN_NAME_RELEASE_DATE = "release_date";

    }
}
Per associare questa classe al database,è necessaria solamente la annotazione @Database,in cui va specificato il nome del database (senza .sqlite) e la versione del database, necessaria per future migrazioni/aggiornamenti del Database (lo vedremo più avanti).
Per comodità personale all’interno di questa classe creo una classe statica per ogni tabella del mio database per “variabilizzare” i nomi delle relative colonne.
Come ultimo passo, è necessario inizializzare la libreria.Il posto migliore per inizializzala è all’interno della propria classe Application . Create la classe che estende Application e inizializzate la libreria all’interno dell OnCreate :
 
Mainapplication.java
public class MainApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FlowManager.init(new FlowConfig.Builder(this).build());
        if(BuildConfig.DEBUG)
            FlowLog.setMinimumLoggingLevel(FlowLog.Level.V);
    }
}
FlowManager.init() è il metodo che si occupa dell’inizializzazione di DBFLow. setMinimumLoggingLevel è un utility per vedere i vari log della libreria.
Per ultima cosa associamo questa classe come Application dell’applicazione.Per fare ciò modifichiamo il file manifest.xml :
<application android:name=".core.MainApplication” ... >
Perfetto,all’apertura della applicazione controllerà se il database esiste esse non fosse presente ,verrà creato .
Di seguito il link del progetto guida che ho creato.
Nella prossima parte descriverò la creazione delle varie tabelle dai bean java!
Alla Prossima!
Daniele.

Leave a comment

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