In JPQL per Bulk Updates si intendono aggiornamenti massivi degli archivi.
Nel seguente esempio (tratto dal libro EJB In Action) è proposto prima il metodo tradizionale di update singoli , ossia questo:
Query query = em.createQuery(
"SELECT s FROM Seller s WHERE s.createDate <= ?1");
...
List sellers = query.getResultList();
Iterator i = seller.iterator();
while (i.hasNext()) {
Seller seller = (seller) i.next();
Seller.setStatus("Gold");
}
Con il meccanismo del bulk update in sostanza si scrive un unico update con una data di filtro e quindi lo si esegue, l’update dato alla query sarà il seguente:
Update Seller s
SET s.status = 'Gold' WHERE s.createDate <= ?1
Bisogna però ricordarsi che nel caso dei bulk update non funziona l’ optimistic locking !
Quindi i campi version, anche se correttamente presenti e definiti con l’annotation @Version ,non vengono aggiornati ed è possibile incappare nel problema degli stale objects.
Nessun commento:
Posta un commento