Gestione del database - A7F/Progetto-I GitHub Wiki

La base di dati del programma è gestita in due fronti.

  1. Il funzionamento dei salvataggi di stato ogni x secondi è gestito tramite Hibernate: questa scelta è stata guidata principalmente dall' alta efficienza di questo ORM e dal voler mantenere il codice il più pulito ed object-oriented possibile: sarebbe stato improponibile scrivere manualmente query per salvare lo stato del programma. Hibernate esegue un commit (che nel programma è chiamato "snapshot") sulla base di dati ed in particolare sulla table snapshot tramite un thread (vedere classe src.snapshotEngine.SnapshotDaemon). Il thread è eseguito saltuariamente essendo regolato dal ScheduledExecutorService (vedere classe src.snapshotEngine.SnapshotEngine ).

  2. Le query basilari come la creazione iniziale della struttura del database ed il popolamento della table impiegati è gestita da un oggetto singleton DatabaseManager il quale si occupa di aprire la connessione verso la base di dati ed eseguire query scritte in normale linguaggio MySQL: per vederle, consultare la classe src.utils.DatabaseStrings).

In particolare, ecco il flowchart delle azioni che esegue il programma durante l' avvio per quanto riguarda la connessione, eventuale creazione ed avvio di snapshot sulla base di dati:

Il thread si arresta solo quando l'utente termina il programma.