Oracle JDBC-drivrutinen har korrekt stöd för setFetchSize()
metod på java.sql.Statement
, vilket låter dig kontrollera hur många rader föraren ska hämta på en gång.
Men RowMapper
som används av Spring fungerar genom att läsa in varje rad i minnet och hämta RowMapper
att översätta det till ett objekt och lagra varje rads objekt i en stor lista. Om din resultatuppsättning är enorm kommer den här listan att bli stor, oavsett hur JDBC hämtar raddata.
Om du behöver hantera stora resultatuppsättningar är RowMapper inte skalbar. Du kan överväga att använda RowCallbackHandler
istället, tillsammans med motsvarande metoder på JdbcTemplate. RowCallbackHandler
dikterar inte hur resultaten lagras, utan det är upp till dig att lagra dem.