Le comportement par défaut pour MySQL Connector/J est de charger tout le contenu du ResultSet
en mémoire dès que .executeQuery
est appelé. Ainsi, même si notre ResultSet
est TYPE_FORWARD_ONLY
les développeurs MySQL JDBC ont apparemment décidé d'être "gentils" et de nous permettre d'utiliser .first
, .absolute
, etc. dans ce cas (parce que l'ensemble du ResultSet
est en mémoire et facilement disponible), même si la spécification JDBC indique
Notez cependant que si l'ensemble du ResultSet
n'est pas garanti d'être en mémoire, par exemple, si nous utilisons st.setFetchSize(Integer.MIN_VALUE)
pour "diffuser" le ResultSet
au fur et à mesure que nous le parcourons, MySQL Connector/J ne nous laissera utiliser que .next
ou nous aurons
com.mysql.jdbc.OperationNotSupportedException: Operation not supported for streaming result sets