Драйверът на Oracle JDBC има правилна поддръжка за setFetchSize()
метод на java.sql.Statement
, което ви позволява да контролирате колко реда ще извлече драйверът наведнъж.
Въпреки това, RowMapper
както се използва от Spring работи, като чете всеки ред в паметта, получавайки RowMapper
да го преведете в обект и да съхранявате обекта на всеки ред в един голям списък. Ако вашият набор от резултати е огромен, тогава този списък ще стане голям, независимо от това как JDBC извлича данните от редовете.
Ако трябва да обработвате големи набори от резултати, тогава RowMapper не е мащабируем. Може да помислите да използвате RowCallbackHandler
вместо това, заедно със съответните методи на JdbcTemplate. RowCallbackHandler
не диктува как да се съхраняват резултатите, оставяйки на вас да ги съхранявате.