Sterownik Oracle JDBC ma odpowiednią obsługę setFetchSize()
metoda na java.sql.Statement
, który pozwala kontrolować liczbę wierszy, które kierowca pobierze za jednym razem.
Jednak RowMapper
używany przez Spring działa poprzez wczytanie każdego wiersza do pamięci, pobranie RowMapper
przetłumaczyć go na obiekt i przechowywać obiekt każdego wiersza na jednej dużej liście. Jeśli Twój zestaw wyników jest ogromny, ta lista stanie się duża, niezależnie od tego, jak JDBC pobierze dane wiersza.
Jeśli potrzebujesz obsłużyć duże zestawy wyników, RowMapper nie jest skalowalny. Możesz rozważyć użycie RowCallbackHandler
zamiast tego wraz z odpowiednimi metodami w JdbcTemplate. RowCallbackHandler
nie dyktuje sposobu przechowywania wyników, pozostawiając tobie ich przechowywanie.