Do seu comentário, você tem prepareCall dentro do seu loop. Uma vantagem das instruções preparadas (e instruções que podem ser chamadas) é que você pode prepará-las uma vez e depois trocar os valores passados nos parâmetros; há sobrecarga cada vez que a chamada é preparada, portanto, se você puder trazer isso para fora do seu loop, poderá descobrir que o tempo de execução diminui. Você pode descobrir que desativar o AutoCommit também ajuda, pois há uma sobrecarga com cada commit.
conn.setAutoCommit(false);
CallableStatement stmt = conn.prepareCall(sql);
while(true) {
stmt.setInt(1, value);
stmt.execute();
}
conn.commit();
conn.setAutoCommit(true);
(
conn.setAutoCommit(true)
se compromete, mas acho mais claro ser explícito).