Da documentação:
Declaração
ResultSet
Como representação, isso significa que a instrução é executada uma vez e, quando iterada, é iterada sobre o resultado dessa execução.
Mas como o resultado do banco de dados é tratado depende realmente da implementação. Para fazer um contraste vou me referir a dois bancos de dados MSSQL, MYSQL.
MSSQL
A documentação do driver MSSQL que comenta exatamente como os resultados são tratados você pode encontrar aqui :
MySQL
Implementação MySql da interface JDBC que você pode ler aqui :