Class JdbcDAO<T>

java.lang.Object
it.unisa.diem.wordageddon_g16.db.JdbcDAO<T>
Type Parameters:
T - tipo dell'entità gestita dal DAO
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 base per l'accesso ai dati tramite JDBC.

Implementa il pattern DAO e fornisce metodi comuni per eseguire query SQL parametrizzate, operazioni di aggiornamento e verifiche strutturali. Ogni DAO specifico estende questa classe.

  • 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