Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Spring JDBC-Unterstützung und großer Datensatz

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.