Turn off autocommit
executeBatch will have an improved performance over executeUpdate as long as autocommit is set to false:
connection.setAutoCommit(false);
PreparedStatement ps = connection.prepareStatement(query);
for (Record record : records) {
// etc.
ps.addBatch();
}
ps.executeBatch();
connection.commit();