Saya akan berasumsi bahwa Anda menggunakan Connector/JDBC driver resmi MySQL yang disediakan.
Anda secara eksplisit memberi tahu JDBC (dan MySQL) untuk mengalirkan hasil baris demi baris dengan statement.setFetchSize(Integer.MIN_VALUE);
Dari MySQL Documents :
Nilai apa pun selain Integer.MIN_VALUE untuk ukuran pengambilan diabaikan oleh MySQL, dan perilaku standar berlaku. Seluruh rangkaian hasil akan diambil oleh driver JDBC.
Atau jangan gunakan setFetchSize() , jadi driver JDBC akan menggunakan nilai default (0 ), atau atur nilainya ke 0 secara eksplisit. Menggunakan nilai 0 juga akan memastikan bahwa JDBC tidak menggunakan kursor MySQL, yang mungkin terjadi tergantung pada versi dan konfigurasi MySQL dan Connector/J Anda.