Sto facendo una query per recuperare una grande quantità di ID (interi). Invece di scorrere milioni di volte attraverso il ResultSet e copiare tutto uno per uno in un ArrayList, c'è un modo per recuperare semplicemente tutto come ArrayList?Come posso recuperare un ResultSet JDBC come ArrayList?
Capisco che ResultSet debba essere iterato perché l'implementazione sottostante potrebbe essere il caching, ma nella mia situazione ho solo bisogno di tutti gli ID immediatamente. So che posso impostare il FetchSize su un numero elevato, ma poi devo ancora recuperare gli ID uno per uno.
Precisazione: il motivo per cui voglio farlo è la prestazione. Il profiling mi mostra che eseguire ResultSet.next(), ResultSet.getInt() e ArrayList.add() milioni di volte richiede un po 'di tempo. Immagino che il database (sto usando H2, che è scritto in Java) probabilmente abbia l'array o l'elenco da qualche parte in memoria, quindi sto cercando un modo per copiarlo direttamente invece che attraverso l'interfaccia iterativa ResultSet .
Probabilmente occuparsi di milioni di interi richiede molto tempo. Vuoi invece un int [] o primitivo come un elenco? Probabilmente non è implementato direttamente come int/List a causa di aggiornamenti e tableness generale. –
int [] o Elenco sono entrambi a posto. Fondamentalmente sto solo cercando un modo per dire al database: dimentica il caching/lazy loading/etc., Dammi i dati il più velocemente possibile :) – Deckard
Avere un profilo e vedere dove si trova il problema. (Oracle ha ottenuto i metodi di array di colonne sul suo ResultSet, IIRC. Non che ciò sia importante per H2.) –