Class JdbcDAO<T>
java.lang.Object
it.unisa.diem.wordageddon_g16.db.JdbcDAO<T>
- Type Parameters:
T
- tipo dell'entità gestita dal DAO concreto
- All Implemented Interfaces:
DAO<T>
- Direct Known Subclasses:
JDBCDocumentDAO
,JDBCGameReportDAO
,JDBCStopWordDAO
,JDBCUserDAO
,JDBCWdmDAO
Classe astratta di supporto per la realizzazione di DAO (Data Access Object) basati su JDBC.
Fornisce un insieme di metodi protetti e riutilizzabili per semplificare l'accesso al database,
centralizzando la logica comune di esecuzione di query, aggiornamenti e gestione delle risorse.
Ciascun DAO concreto dovrà estendere questa classe e implementare i metodi specifici previsti
dall'interfaccia DAO
.
Caratteristiche principali:
- Gestione automatica di
PreparedStatement
eResultSet
tramite try-with-resources. - Supporto a query parametrizzate e non, tramite metodi generici che sfruttano una
Callback
per l’elaborazione flessibile dei risultati dalla query SQL (ResultSet). - Gestione centralizzata delle eccezioni e logging automatico in caso di errore.
- Metodi utility per operazioni semplici e frequenti (es. verifica se una tabella è vuota).
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Connection
Connessione persistente al database utilizzata dal DAO. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
JdbcDAO
(Connection connection) Costruisce un nuovo JdbcDAO utilizzando la connessione specificata. -
Method Summary
Modifier and TypeMethodDescriptionprotected <R> R
executeQuery
(String sql, javafx.util.Callback<ResultSet, R> cb) Esegue una query SQL semplice (senza parametri) e ne elabora il risultato tramiteCallback
.protected <R> R
executeQuery
(String sql, javafx.util.Callback<ResultSet, R> cb, Object... params) Esegue una query SQL con parametri e applica unaCallback
per elaborare ilResultSet
.protected long
executeUpdate
(String sql, Object... params) Esegue un'operazione di modifica (INSERT, UPDATE, DELETE) sul database.protected boolean
Verifica se una tabella contiene almeno una riga.
-
Field Details
-
connection
Connessione persistente al database utilizzata dal DAO.
-
-
Constructor Details
-
JdbcDAO
Costruisce un nuovo JdbcDAO utilizzando la connessione specificata.- Parameters:
connection
- la connessione al database
-
-
Method Details
-
executeQuery
Esegue una query SQL con parametri e applica unaCallback
per elaborare ilResultSet
.- Type Parameters:
R
- tipo di dato restituito dalla callback- Parameters:
sql
- query SQL parametrizzatacb
- callback che processa il risultato della queryparams
- parametri da sostituire nella query- Returns:
- risultato ottenuto dalla callback
- Throws:
QueryFailedException
- se la query fallisce durante l'esecuzione
-
executeQuery
Esegue una query SQL semplice (senza parametri) e ne elabora il risultato tramiteCallback
.- Type Parameters:
R
- tipo di risultato prodotto dalla callback- Parameters:
sql
- query SQL da eseguirecb
- callback che processa ilResultSet
- Returns:
- risultato ottenuto dalla callback
- Throws:
QueryFailedException
- se la query fallisce
-
executeUpdate
Esegue un'operazione di modifica (INSERT, UPDATE, DELETE) sul database.Se l'operazione è una INSERT, restituisce l'ID generato dalla riga appena inserita.
- Parameters:
sql
- istruzione SQL da eseguireparams
- parametri per l'inserimento- Returns:
- ID generato, oppure
-1
se assente - Throws:
SQLException
- se l'esecuzione fallisce
-
isEmpty
Verifica se una tabella contiene almeno una riga.- Parameters:
tableName
- nome della tabella da controllare- Returns:
true
se contiene righe,false
se è vuota o se la query fallisce
-