Backend

Dettagli Tecnici dello Sviluppo Back-End di MyFidelity

Nella realizzazione della parte back-end dell’applicazione MyFidelity, sono stati selezionati strumenti adeguati per garantire un funzionamento efficiente e scalabile. Ecco i dettagli tecnici:

Tecnologie Utilizzate


Java Logo
  • Java: Il linguaggio di programmazione principale utilizzato per sviluppare la parte backend, tra cui le API usato nella versione 21.
  • JDBC (Java Database Connectivity): Un'API Java che definisce come un client può accedere a un database. Utilizziamo il driver JDBC di MariaDB per interfacciarci con il database MariaDB.

MariaDB Logo
  • MariaDB: MariaDB, un database relazionale open source, offre elevate prestazioni, sicurezza e compatibilità con MySQL. Il driver JDBC di MariaDB consente alle applicazioni Java di interagire con il database.

Spring Logo
  • Spring Boot: Un framework che semplifica la creazione di applicazioni stand-alone e basate su produzione, utilizzando il modello di programmazione Spring.

Panoramica del Framework Spring Boot Spring Boot semplifica la configurazione delle applicazioni Java, supporta lo sviluppo di microservizi e offre un ambiente di sviluppo integrato con server web incorporati.

Alcune delle dependencies utilizzate:

  • Spring Data JPA: Per l'accesso ai dati tramite JPA (Java Persistence API). Semplifica l'interazione con il database e offre funzionalità avanzate per le operazioni CRUD.

  • Spring Boot Starter Web : Per la creazione di servizi web RESTful. Questa dipendenza abilita il framework Spring MVC per gestire le richieste HTTP e le risposte.

  • Spring Security Core e Spring Security Web: Per la gestione dell'autenticazione e dell'autorizzazione. Queste dipendenze consentono di proteggere le risorse dell'applicazione e gestire gli utenti.

  • Lombok: Per la generazione automatica di codice boilerplate. Semplifica la scrittura di classi riducendo la verbosità del codice.

  • JSON Web Token (JWT): Per la gestione dei token di autenticazione. Questa libreria consente di creare, verificare e gestire i token JWT.


Liquibase Logo
  • Liquibase: Uno strumento di gestione delle versioni del database, che consente di tracciare, gestire e applicare modifiche allo schema del database in modo sicuro e affidabile. Utilizzata come dependency all'interno di Spingboot tramite Liquibase Core.

Inizializzazione del Database con Liquibase Liquibase gestisce le migrazioni del database, traccia le modifiche e facilita l'integrazione continua automatizzando le migrazioni come parte del processo di build e deploy.

Struttura Database

Qui troviamo le tabelle e le entità che le compongono con le loro rispettive associazioni, ogni tabella ha un ruolo specifico:

utenti: Questa tabella contiene informazioni sugli utenti del sistema. Ogni utente ha un id, nome, cognome, email, password, data di nascita, ruolo (per distinguere tra diversi tipi di utenti come clienti, e admin), numero di cellulare, username e codice.

fidelity_card: Questa tabella tiene traccia delle carte fedeltà emesse. Ogni carta ha un id, una data di inizio e di fine validità, e l’id_utente del titolare della carta. L’id_utente è una chiave esterna che fa riferimento all’id nella tabella degli utenti.

punti: Questa tabella registra i punti guadagnati dagli utenti. Ogni record ha un id, un timestamp (ts) che indica quando i punti sono stati guadagnati, l’importo dei punti e l’id_fidelity della carta fedeltà a cui i punti sono stati accreditati. L’id_fidelity è una chiave esterna che fa riferimento all’id nella tabella delle fidelity_card.

Queste tabelle permettono di gestire un sistema di carte fedeltà, tenendo traccia degli utenti, delle loro carte e dei punti che accumulano. Le chiavi esterne (id_utente e id_fidelity) permettono di collegare le tabelle tra loro, creando relazioni tra gli utenti, le loro carte fedeltà e i punti che guadagnano.

Modello Concettuale

puntifidelity_cardutenti
id PKid PKid PK
tsdata_inizionome
importodata_finecognome
id_fidelity FKid_utente FKemail
notetot_puntipassword
attivadata
ruolo
cellulare
username UN
codice UN

Modello Logico

punti(id, ts, importo, id_fidelity)

fidelity_card(id, data_inizio, data_fine, id_utente)

utenti(id, nome, cognome, email, password, data, ruolo, cellulare, username, codice)