Fase 3 – Persistenza dei Dati e Streams (2–3 mesi)
SQL di Base
- DDL:
CREATE
,ALTER
. - DML:
SELECT
,INSERT
,UPDATE
,DELETE
. - Joins:
INNER
,LEFT
,RIGHT
. - Keys: chiavi primarie e chiavi esterne.
- Normalizzazione: 1NF, 2NF, 3NF.
- Esempio: creare tabelle per prodotti e categorie.
JDBC e Connection Pool
- Classi:
Connection
,Statement
,PreparedStatement
,ResultSet
. - Uso di Connection Pool (HikariCP).
- Migliori pratiche:
try-with-resources
, gestione diSQLException
.
Hibernate + JPA nella Pratica
- Annotazioni:
@Entity
,@Id
,@ManyToOne
,@OneToMany
. - Configurazione:
persistence.xml
oapplication.properties
. - Operazioni CRUD con
EntityManager
. - Introduzione alle migrazioni di database con Flyway o Liquibase.
Introduzione ai Database NoSQL
- Concetti: documents, collections, scalabilità orizzontale.
- MongoDB: configurazione, operazioni CRUD con MongoRepository.
- Spring Data MongoDB: integrazione con Spring Boot.
- Esempio: memorizzare i log delle attività di sistema per i prodotti in MongoDB.
Streams e Lambda Expressions
- Operazioni:
filter
,map
,sorted
,collect
,forEach
,reduce
. - Esempio: filtrare i prodotti per prezzo, ordinare per nome.
Optional e Interfacce Funzionali
Optional
:orElse
,ifPresent
,orElseThrow
.- Interfacce funzionali:
Function
,Predicate
,Consumer
. - Esempio: utilizzare
Predicate
negli Streams per filtrare i dati.
Collezioni Avanzate
- LinkedList: inserimento/rimozione efficiente.
- TreeMap: coppie chiave-valore ordinate.
- PriorityQueue: coda di priorità.
- LinkedHashMap e Deque (introduzione).
Logging (SLF4J/Logback)
- Configurazione di SLF4J con Logback.
- Livelli:
INFO
,DEBUG
,ERROR
. - Esempio: registrare le query di Hibernate.
Concetti di Transazione (ACID)
- Atomicità, Consistenza, Isolamento, Durabilità.
- Transazioni con JDBC (
commit
,rollback
) e Hibernate (@Transactional
).
Indici e Piani di Esecuzione
- Indici: primari, unici, compositi.
- Uso di EXPLAIN per ottimizzare le query.
- Esempio: creare un indice su una colonna frequentemente ricercata.
Manipolazione dei File (Opzionale)
- Lettura e scrittura con
Files
,BufferedReader
. - Esempio: esportare un report di prodotti in CSV utilizzando Streams.
Test di Database (Introduzione)
- Test di integrazione con H2 e JUnit.
- Esempio: testare le operazioni CRUD con Hibernate.
Progetto Finale
Sistema di Gestione Prodotti
- Database: tabelle Product e Category (relazione 1:N).
- Java: classi con JPA (Product
, Category
), CRUD con Hibernate.
- Opzionale: memorizzare i log delle modifiche dei prodotti in MongoDB.
- Opzionale: memorizzare attributi dinamici dei prodotti (es. specifiche tecniche) in MongoDB.
- Streams: filtrare/ordinare i prodotti (es. per prezzo o categoria).
- Logging: monitorare le operazioni sul database.
- Git: commit per ogni funzionalità (es. feature/crud
, feature/streams
).
- Pubblicazione su GitHub con README esplicativo.