Gestione del database - A7F/Progetto-I GitHub Wiki
La base di dati del programma è gestita in due fronti.
-
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
snapshottramite un thread (vedere classesrc.snapshotEngine.SnapshotDaemon). Il thread è eseguito saltuariamente essendo regolato dalScheduledExecutorService(vedere classesrc.snapshotEngine.SnapshotEngine). -
Le query basilari come la creazione iniziale della struttura del database ed il popolamento della table impiegati è gestita da un oggetto singleton
DatabaseManageril quale si occupa di aprire la connessione verso la base di dati ed eseguire query scritte in normale linguaggio MySQL: per vederle, consultare la classesrc.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.