CREAZIONE DELLO STRATO DI PERSISTENZA DELLA WEB APP

springVedremo ora, dopo aver creato la prima classe di dominio, come creare lo strato di persistenza. Andremo a creare specifiche interfacce che prevedono dei metodi, che normalmente sono le operazioni CRUD, ossia creazione, lettura, update e delete sulla base dati. Una volta create le interfacce creeremo le classi che le implementano e che avranno una notazione fondamentale, @Repository da non dimenticare mai onde evitare errori di Spring MVC. Creiamo un nuovo package, com.xantrix.webapp.repository. Dato che abbiamo implementato la classe di dominio Articoli è chiaro che la prima interfaccia che creeremo sarà la  ArticoliRepository.

ArticoliRepository

Come si vede abbiamo due metodi di selezione sovraccaricati, nel primo viene specificato un filtro dinamico per codice articolo e descrizione, nel secondo oltre a filtrare gli articoli, possiamo decidere l’ordinamento e su quale campo filtrare i record della tabella ARTICOLI. InsArticolo si occuperà dell’inserimento e della modifica, mentre l’ultimo metodo riguarda la cancellazione. Creiamo ora la classe che implementa questa interfaccia ArticoliRepositoryImpl. Non dobbiamo scordare di mettere la notazione @Repository in caso contrario l’IOC andrà in errore a volte mostrando anche messaggi poco comprensibili. Per interfacciarci alla base dati useremo il linguaggio T-SQL, molto potente ma che, come vedrai, a volte presenta delle insidie.

Selezione Articoli

IL JDBC TEMPLATE

Per poter eseguire le query SQL occorre utilizzare una delle componenti viste nel package di configurazione, il JdbcTemplate con la notazione @Autowired per la dependencies Injection. Questo significa che quando il progetto sarà in fase di startup, il JdbcTemplate verrà avviato; infatti, l’istanza che si creerà all’avvio è l’essenza dell’IOC. Il JdbcTemplate non basta da solo per eseguire la query SQL, abbiamo bisogno di una classe ArticoliMapper che svolge il seguente importante ruolo, ossia preleva il recordset ottenuto dal JdbcTemplate e lo mappa con la nostra classe di dominio Articoli. Il risultato finale sarà una collezione di articoli opportunamente mappati dalla classe ArticoliMapper. Vediamo come è fatta questa classe.

ArticoliMapper

IL METODO MAPROW

Il primo argomento del metodo mapRow rappresenta il nostro recordset, il secondo il numero di riga. In pratica il codice che vedi preleva le colonne della tabella ARTICOLI del database una riga alla volta e le mappa con i rispettivi setter nella classe di dominio Articoli. Questa tecnica non viene molto utilizzata, è preferibile utilizzare le Store Procedure che ci garantiscono più flessibilità e maggiore sicurezza.

CREAZIONE STORE PROCEDURE IN SQL SERVER

Il codice SQL lo possiamo utilizzare anche nelle nostre Web App, tuttavia ha un problema, è incline alla Sql Injection una tecnica molto utilizzata nel campo hacker. L’utilizzo delle Store Procedure ci mette un po’ a riparo da possibili violazioni delle nostre basi dati, inoltre ci garantisce la portabilità. Questo significa che con una Store Procedure il codice SQL non risiede direttamente nella Web App ma è incorporato all’interno del database; quindi, una modifica al codice SQL non deve essere ripetuta per tutta l’applicazione ma solo nella procedura. Adesso andiamo al concreto e vediamo come si fa a creare una Store Procedure. Il codice che riporto spiega passo dopo passo come creare SP in SQL Server.

Copy to Clipboard

CREAZIONE DELLA STORE PROCEDURE DI INSERIMENTO

Creata la Store Procedure di selezione, andiamo a creare la SP che si occupa della modifica e dell’inserimento. Ci sarà una verifica sul codice articolo, se presente si procederà con la modifica altrimenti con l’inserimento di un nuovo articolo.

Copy to Clipboard

CREAZIONE DELLO STRATO DI SERVIZIO

Lo strato di servizio permette di collegare il controller con lo strato di persistenza. Nell’architettura MVC non bisogna mai collegare direttamente lo strato di persistenza con il controller, abbiamo bisogno di uno strato intermedio. Normalmente è in questo strato che si mette la logica applicativa. Creiamo un nuovo package, com.xantrix.webapp.service, con una nuovo interfaccia ArticoliService, inseriremo in questa interfaccia gli stessi identici metodi che abbiamo visto nello strato di persistenza.

ArticoliService

Adesso creiamo la classe che implementerà questa interface ArticoliServiceImpl. La parte più importante è inserire la notazione @Service, da non scordare mai, in caso contrario l’IOC della nostra applicazione andrà in errore e non si avvierà. Una volta implementata l’interfaccia dobbiamo aggiungere un ulteriore importante tassello, lo strato di persistenza tramite dependencies injection. In questo modi stiamo facendo il code injection dello strato di repository all’interno dello strato di servizio. Qui vanno messe le Business Logic, se ad esempio dobbiamo implementare uno sconto, lo faremo in questo strato.

ArticoliServiceImpl

DOWNLOAD CODICE DELL’ARTICOLO

CODICE DELL’ARTICOLO

In basso è riportato il video per l’importazione nel proprio workspace del progetto. Al momento non ti ho spiegato ancora il controller e la pagina JSP articoli. Lo farò nel prossimo post.

IL LINGUAGGIO JAVA

IL LINGUAGGIO JAVA

LINK AI POST PRECEDENTI

SPRING FRAMEWORK