public Produkt[] getAll(Serializable id[]) {Při zběžném otestování funguje báječně, nicméně v produkčním nasazení se objeví problém. Pokud je identifikátorů pár stovek, ne-li tisíc, provedení se může protáhnout na pár minut. Každé
List<Produkt> list = new ArrayList<Produkt>(id.length);
for (Serializable i: id) {
Produkt p = (Produkt)session.get(Produkt.class, i);
if (p != null)
list.add(p);
}
return list.toArray(new Produkt[]{});
}
get()
je totiž jeden SQL select...Správné řešení obnáši použití
Query
:public Produkt[] getAll(Serializable id[]) {
List<Produkt> list = session
.createQuery("from Produkt where id in (:id)")
.setParameterList("id", Arrays.asList(id)).list();
return list.toArray(new Produkt[]{});
}
Žádné komentáře:
Okomentovat