Der Oracle JDBC-Treiber unterstützt ordnungsgemäß setFetchSize()
Methode auf java.sql.Statement
, mit dem Sie steuern können, wie viele Zeilen der Treiber auf einmal abrufen soll.
Allerdings RowMapper
wie es von Spring verwendet wird, liest jede Zeile in den Speicher und erhält den RowMapper
um es in ein Objekt zu übersetzen und das Objekt jeder Zeile in einer großen Liste zu speichern. Wenn Ihre Ergebnismenge riesig ist, wird diese Liste groß, unabhängig davon, wie JDBC die Zeilendaten abruft.
Wenn Sie große Ergebnismengen verarbeiten müssen, ist RowMapper nicht skalierbar. Sie könnten die Verwendung von RowCallbackHandler
in Betracht ziehen stattdessen zusammen mit den entsprechenden Methoden auf JdbcTemplate. RowCallbackHandler
schreibt nicht vor, wie die Ergebnisse gespeichert werden, und überlässt es Ihnen, sie zu speichern.