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

public abstract class JdbcDAO<T> extends Object implements DAO<T>
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 e ResultSet 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

    Fields
    Modifier and Type
    Field
    Description
    protected final Connection
    Connessione persistente al database utilizzata dal DAO.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    JdbcDAO(Connection connection)
    Costruisce un nuovo JdbcDAO utilizzando la connessione specificata.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected <R> R
    executeQuery(String sql, javafx.util.Callback<ResultSet, R> cb)
    Esegue una query SQL semplice (senza parametri) e ne elabora il risultato tramite Callback.
    protected <R> R
    executeQuery(String sql, javafx.util.Callback<ResultSet, R> cb, Object... params)
    Esegue una query SQL con parametri e applica una Callback per elaborare il ResultSet.
    protected long
    executeUpdate(String sql, Object... params)
    Esegue un'operazione di modifica (INSERT, UPDATE, DELETE) sul database.
    protected boolean
    isEmpty(String tableName)
    Verifica se una tabella contiene almeno una riga.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface it.unisa.diem.wordageddon_g16.db.contracts.DAO

    delete, insert, selectAll, update
  • Field Details

    • connection

      protected final Connection connection
      Connessione persistente al database utilizzata dal DAO.
  • Constructor Details

    • JdbcDAO

      protected JdbcDAO(Connection connection)
      Costruisce un nuovo JdbcDAO utilizzando la connessione specificata.
      Parameters:
      connection - la connessione al database
  • Method Details

    • executeQuery

      protected <R> R executeQuery(String sql, javafx.util.Callback<ResultSet, R> cb, Object... params)
      Esegue una query SQL con parametri e applica una Callback per elaborare il ResultSet.
      Type Parameters:
      R - tipo di dato restituito dalla callback
      Parameters:
      sql - query SQL parametrizzata
      cb - callback che processa il risultato della query
      params - parametri da sostituire nella query
      Returns:
      risultato ottenuto dalla callback
      Throws:
      QueryFailedException - se la query fallisce durante l'esecuzione
    • executeQuery

      protected <R> R executeQuery(String sql, javafx.util.Callback<ResultSet, R> cb)
      Esegue una query SQL semplice (senza parametri) e ne elabora il risultato tramite Callback.
      Type Parameters:
      R - tipo di risultato prodotto dalla callback
      Parameters:
      sql - query SQL da eseguire
      cb - callback che processa il ResultSet
      Returns:
      risultato ottenuto dalla callback
      Throws:
      QueryFailedException - se la query fallisce
    • executeUpdate

      protected long executeUpdate(String sql, Object... params) throws SQLException
      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 eseguire
      params - parametri per l'inserimento
      Returns:
      ID generato, oppure -1 se assente
      Throws:
      SQLException - se l'esecuzione fallisce
    • isEmpty

      protected boolean isEmpty(String tableName)
      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