Vaclav Pech wrote:
Děkuji za Vaše doporučení i za uvedený odkaz.
Ohledně diskutovaného problému s kolekcemi, mám dojem, že jsme si
částečně nerozumněli. Možná jsem to špatně vyjádřil, ale rozhodně
nedoporučuji inicializovat lazy property objektů v kolekci pomocí new
ArrayList(). Na toto by opravdu měly sloužit fetch strategie. Pouze
jsem navrhoval proiterovat výsledný list vrácený z query, což lze
zajistit například i jeho obalením v nové kolekci, třeba ArrayListu.
Bez fetch join se samozřejmě daná query neobejde. A při takovém
použití mě žádný problém spojený s neočekávaným označením celé kolekce
za "dirty" nenapadá. Opravte mě prosím, pokud se pletu.
Pokud samozrejme mate session jen pro cteni (FlushMode.NEVER), tak je
jedno jakym zpusobem docilite inicializace objektu v kolekci.
Proiterovani listu nebude zrejme efektivni.
Zkuste to a uvidite.
- vysledkem iterovani podle mne ani nebude inicializace celeho pole
(pokud teda nemate vlastni metodu hashCode nebo equals, ktera pouzije
nejakou property mimo primary key) a pri volani Hibernate.initialize()
na kazdy objekt pak i N dotazu do databaze (nezkousel jsem to a
dokumentace o tom mlci, jen doporucuje pouzit
- vysledkem volani Hibernate.initialize() na celou kolekci bude
dotaz jeden....
Lukas
Vašek
__________ Informace od NOD32 1.1771 (20060923) __________
Tato zprava byla proverena antivirovym systemem NOD32.
http://www.nod32.cz
__________ Informace od NOD32 1.1771 (20060923) __________
Tato zprava byla proverena antivirovym systemem NOD32.
http://www.nod32.cz