Från din kommentar har du prepareCall i din loop. En fördel med förberedda satser (och anropsbara satser) är att du kan förbereda det en gång och sedan byta ut de värden som skickas i parametrarna; det finns overhead varje gång samtalet förbereds, så om du kunde ta det utanför din loop kan du upptäcka att körtiden minskar. Du kanske upptäcker att det också hjälper att stänga av AutoCommit, eftersom det finns overhead för varje 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)
begår, men jag tycker att det är tydligare att vara explicit).