Alcune piccole migliorie puoi farle
Ottieni prima l'elenco completo degli articoli e memorizzalo in una collezione.
Poi passa la collezione al metodo (ovviamente, dovrai modificare la firma del metodo) e modificalo in questo modo:
codice:
public static void aggiornaMagazzino(List<MioOggetto> oggetti){
PreparedStatement stmt = conn.prepareStatement("UPDATE ARTICOLO SET QUANTITA = QUANTITA - ? where codice = ?");
for(MioOggetto mo : oggetti) {
stmt.setInt(1, mo.getQuantita);
stmt.setString(2,mo.getString);
stmt.executeUpdate();
}
stmt.close();
}
Questa è una prima miglioria: invece di creare un nuovo oggetto Statement per ciascun oggetto da modificare, ne crei uno solo e lo ricicli (le PreparedStatement sono state inventate proprio per questo!). Questo dovrebbe già darti dei piccoli risultati in termini di prestazioni.
Una seconda "miglioria" (da valutare se possa effettivamente essere una miglioria o meno) consiste nell'effettuare queste due operazioni:
1) Raggruppi tutti i prodotti che hanno la stessa quantità da togliere
2) Effettui una unica query di update per ciascun gruppo di prodotti, sempre riciclando la stessa PreparedStatement.
Se ti interessa questa seconda soluzione, posso provare a stendere due righe di codice di esempio.
Ciao.