Вы должны будете сделать это отдельным запросом, например:
SELECT COUNT(1) FROM table_name
Некоторые драйверы JDBC могут сказать вам, но это необязательное поведение, и, более того, драйвер может еще не знать. Это может быть связано с тем, как оптимизируется запрос, например, две примерные стратегии выполнения в Oracle должны получить все строки как можно быстрее или получить первую строку как можно быстрее.
Если вы выполняете два отдельных запроса (один - счетчик, а другой - запрос), вам необходимо выполнить их в рамках одной транзакции. Это будет хорошо работать в Oracle, но может быть проблематичным в других базах данных (например, SQL Server покажет вам незафиксированные данные или заблокирует внешнее незафиксированное обновление в зависимости от уровня вашей изоляции, тогда как Oracle поддерживает уровень изоляции, который дает вам транзакционно согласованное представление данные без блокировки на внешние обновления).
Обычно это не имеет значения, сколько строк. Обычно этот тип запроса обрабатывается пакетно или разбивается на страницы, и в любом случае вы получаете информацию о прогрессе в виде загруженных / обработанных строк, и вы можете определить конец набора результатов (очевидно).