Ovladač Oracle JDBC má správnou podporu pro setFetchSize()
metoda na java.sql.Statement
, což vám umožňuje řídit, kolik řádků ovladač načte najednou.
Nicméně RowMapper
jak jej používá Spring, funguje tak, že načte každý řádek do paměti a získá RowMapper
převést jej na objekt a uložit objekt každého řádku do jednoho velkého seznamu. Pokud je vaše sada výsledků obrovská, pak se tento seznam zvětší bez ohledu na to, jak JDBC načte data řádku.
Pokud potřebujete zpracovat velké sady výsledků, pak RowMapper není škálovatelný. Můžete zvážit použití RowCallbackHandler
místo toho spolu s odpovídajícími metodami na JdbcTemplate. RowCallbackHandler
neurčuje, jak se výsledky ukládají, nechává na vás, abyste je uložili.