Il driver Oracle JDBC ha un supporto adeguato per setFetchSize()
metodo su java.sql.Statement
, che ti consente di controllare quante righe il driver recupererà in una volta sola.
Tuttavia, RowMapper
come usato da Spring, leggendo ogni riga in memoria, ottenendo il RowMapper
per tradurlo in un oggetto e memorizzare l'oggetto di ogni riga in un grande elenco. Se il tuo set di risultati è enorme, questo elenco diventerà grande, indipendentemente da come JDBC recupera i dati della riga.
Se devi gestire set di risultati di grandi dimensioni, RowMapper non è scalabile. Potresti prendere in considerazione l'utilizzo di RowCallbackHandler
invece, insieme ai metodi corrispondenti su JdbcTemplate. RowCallbackHandler
non determina come vengono archiviati i risultati, lasciando a te la possibilità di archiviarli.