INTRODUZIONE ALLO STRATO DI PERSISTENZA

spring

Come ti ricorderai, quando abbiamo analizzato gli strati della nostra applicazione web, accanto allo strato di presentazione che gestisce le richieste e crea le risposte HTML, XML, JSON in risposta al client, esiste anche lo strato di persistenza il cui scopo è quello di interfacciare il DBMS alla nostra applicazione.

Schema a strati

Il database può essere di tipo relazionale oppure NOSQL come MongoDB. In questo corso utilizzeremo SQL Server, quindi un database relazionale. La scelta è ricaduta su questo DBMS (ci sarà anche la parte MySQL) perché Windows lo supporta nativamente, per Linux già da qualche anno è disponibile la versione per questo motore di database, su macOS come nel mio caso utilizzerò un container Docker e Azure Data Studio per interfacciarmi al database. Ti ho già spiegato quando ho parlato dell’installazione delle componenti su macOS come avere SQL Server anche su questo S.O. Ritornando allo schema, lo strato di servizio è uno strato intermedio che si occupa della Business Logic dell’applicazione e che dialoga con lo strato di presentazione. In questa sezione avremo modo di parlare anche dello strato di dominio, ossia di quelle classi che hanno il compito di mappare le tabelle del database all’applicazione.

IL DATABASE DI ESEMPIO

Il database di esempio AlphaShop proviene dalla grande distribuzione, è stato depotenziato e sono state eliminate gran parte delle tabelle. Resta tuttavia un aiuto efficace per la comprensione del corso. Concentreremo la nostra attenzione sulla tabella ARTICOLI, BARCODE poi sulla tabella CLIENTI e CARDS, PROMO e DETTPROMO quando parleremo dello Spring Boot.

CONFIGURAZIONE DELLA FONTE DATI IN SPRING MVC

Modifichiamo il file pom.xml, ti ricorderai che tale file scarica le dipendenze del progetto. Ora dobbiamo inserire le dipendenze per il file JDBC che permette ai programmi Java di accedere alla base dati. Dobbiamo inoltre scaricare il driver per SQL Server.

JDBC

CONFIGURAZIONE DEL DRIVER JDBC

Una volta installate le dipendenze dobbiamo configurare il driver JDBC, dobbiamo comunicargli dove deve andare a cercare il database e con quale User Id e Password accedere. Creiamo una nuova classe Java JdbcConfig.java, come per ogni classe di configurazione dobbiamo inserire la notazione @Configuration. Un’altra importante notazione è la @EnableTransactionManagement, con cui diciamo a Spring MVC di abilitare le transazioni. La notazione @ComponentScan ci permette di trovare tutte le classi di configurazione, mentre la @PropertySource ci permette di accedere ad un file di configurazione chiamato application.properties e situato nel package src/main/resource. Nel file il codice viene spiegato passo dopo passo.

JDBCConfig

IL FILE APPLICATION.PROPERTIES

Rappresenta la configurazione del driver JDBC letto poi dalla classe di configurazione appena creata.

Application.properties

LO STRATO DI DOMINIO DELLA WEBAPP

Lo strato di dominio rappresenta quelle strutture di classi che mappano le varie tabelle del database. Creiamo un nuovo package com.xantrix.webapp.domain e creiamo la classe  Articoli all’interno del package. Questa classe rappresenterà la tabella ARTICOLI della nostra fonte dati. Quando abbiamo a che fare con una classe di dominio dobbiamo sempre implementare la serializzazione.

Articoli.java

ASSEGNARE I CORRETTI PERMESSI AD UN UTENTE SQL SERVER

Normalmente non si utilizza mai l’utente sa (Super Administrator) per accedere alla base dati. E’ opportuno creare una nuova login da associare alla creazione di un nuovo utente avente i giusti privilegi. Questo per ovvie ragioni di sicurezza.

Copy to Clipboard

VISUALIZZAZIONE DEL DATABASE SQL SERVER

Il seguente video mostra come aprire il database AlphaShop su macOS.