Oracle
 sql >> Base de données >  >> RDS >> Oracle

Prise en charge de Spring JDBC et grand ensemble de données

Le pilote Oracle JDBC prend en charge correctement le setFetchSize() méthode sur java.sql.Statement , qui vous permet de contrôler le nombre de lignes que le pilote récupère en une seule fois.

Cependant, RowMapper tel qu'utilisé par Spring fonctionne en lisant chaque ligne en mémoire, en obtenant le RowMapper pour le traduire en objet et stocker l'objet de chaque ligne dans une grande liste. Si votre ensemble de résultats est volumineux, cette liste s'allongera, quelle que soit la manière dont JDBC récupère les données de la ligne.

Si vous devez gérer de grands ensembles de résultats, RowMapper n'est pas évolutif. Vous pourriez envisager d'utiliser RowCallbackHandler à la place, avec les méthodes correspondantes sur JdbcTemplate. RowCallbackHandler ne dicte pas comment les résultats sont stockés, vous laissant le soin de les stocker.