jdbc — два запроса в одном соединении
Нет, не нужно поднимать новое соединение на каждый запрос. Нужно закрывать имеющиеся statements перед вызовом новых. Просто в данном случае, у тебя одновременно открыто два разных запроса, один из которых в пакетном режиме подтягивает данные из одной таблицы, а второй — подтягивает совершенно другие данные из второй таблицы. Одновременно это быть не может. В данном случае вам действительно потребуется два коннекта (используйте пул соединений для более эффективной работы). Либо вы можете подтянуть данные сначала из одного запроса, закрыть PrepareStatement и ResultSet, и только затем уже подтягивать данные из второй таблицы.
Скорее всего, вам нужно будет получить другое соединение для второго запроса. Но я бы так не делал.
Если вам надо одновременно читать из двух мест в одной базе, значит проблема в дизайне. Вероятно, стоит применить одно из:
1) написать один JOIN для двух таблиц и вернуть его
2) Начитать первый результат в память и работать с этими данными во время итераций по второму
3) Использовать хранимую процедуру в БД, которая сделает всю логику и вернет результат.