lunedì 23 aprile 2012

JPA Bulk Update e optimistic locking

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