Dik za odkazy, na thick-client best preactices jsem narazil. Ale pro me pouziti mi neprislo nic moc zajimaveho. Patch na lazy loading mi prijde take dost nebezpecny. Navic jsem se (nekd) docetl ze Gaving King tohle (lazy loading patch) dlouhodobe odmita zaclenit, kvuli transakcim.
Kazdopadne prostredni clanek je docela zajimavy, spise ale z hlediska tech hiearchickych eventu. Nejvice se mi ale libilo reseni s Remote Lazy Loading [odkaz, ktery jste zaslal minule http://www.theserverside.com/news/1363571/Remote-Lazy-Loading-in-Hibernate]. To skutecne pekne resi jak session tak rmi. Bohuzel se mi zacina prioritizovat pozadavek na to aby tlusty klient nebyl uplne tlusty ale take trochu stand alone (tj aby mohl fungovat i bez serveru (tj. bez session, db) takze nakonec zustanu u prekladu do klientskych objektu :( Dik za rady, --Pavel 2010/9/20 Ondra Medek <xmed...@gmail.com>: > Ted jsem nahodou narazil jeste na: > > http://community.jboss.org/wiki/BestPracticesforThick-ClientApplicationsienon-webapps > > kde jsou dva odkazy: > http://in.relation.to/Bloggers/HibernateAndSwingDemoApp > http://www.360works.com/articles/detail/56/ > > 2010/9/17 Ondra Medek <xmed...@gmail.com>: >> Transparentni reseni pro klienta je pomerne slozite, nezkousel jsem to, viz: >> >> http://h3t.sourceforge.net/ >> http://community.jboss.org/wiki/RemoteLazyLoading >> http://www.theserverside.com/news/1363571/Remote-Lazy-Loading-in-Hibernate >> >> Ja to resim manualne - mam pro kazdou entitu statickou metodu, ktera >> dotaha, co je potreba. Zbyvajici kod na klientovi pak jen zavola tuto >> jednu metodu - tedy jen jeden radek kodu navic. Zaklad je toto: >> >> public static <T extends BaseEntity> T initEntity(T entity, GenericDao<T> >> dao) { >> if (Hibernate.isInitialized(entity)) { >> return entity; // already initialized >> } >> return dao.getById(getIdDirect(entity)); >> } >> >> public static Integer getIdDirect(BaseEntity entity) { >> if (entity instanceof HibernateProxy) { >> LazyInitializer lazyInitializer = ((HibernateProxy) >> entity).getHibernateLazyInitializer(); >> if (lazyInitializer.isUninitialized()) { >> return (Integer) lazyInitializer.getIdentifier(); >> } >> } >> return entity.getId(); >> } >> >> kde dao.getById(getIdDirect(entity)); je ziskani entity pres jeji ID. >> Tedy neni to pro kolekce, to jsem zatim nepotreboval. Spise se snazim >> klientovi vratit vse, co je potreba. Toto pouzivam zatim jen na >> zobrazeni tooltipu a podobnych mene podstatnych informaci. Pokud se >> entity meni, tak je myslim lepsi toho nacist vzdy co nejvice v jedne >> transakci. Mezi ruznymi transakcemi nekdo jiny muze data zmenit a z >> toho mohou byt problemy. >> >> 2010/9/17 Pavel Nemec <neme...@gmail.com>: >>> No ano, problem je lazy loading. Rad bych klienty odstinil od zpusobu >>> persistence (je to mimo jine i pozadavek) a nechci tedy aby si museli >>> dotahovat nejake kusy na zaklade vyjimky "session is closed", nebo aby >>> takovou vyjimku vubec museli chytat. >>> >>> O DTO a potazmo apache commons beanutils jsem nevedel, urcite na to >>> mrknu. Mohlo by to pomoci pri reseni. >>> >>> Dik >>> Pavel >>> >>> Dne 17. září 2010 13:10 Ondra Medek <xmed...@gmail.com> napsal(a): >>>> Ahoj, >>>> >>>> a kde je problem: lazy reference neni serializable nebo ti vadi, ze >>>> klient si pak nedokaze ty lazy reference sam dotahat? Oba pripady jdou >>>> resit. Pripadne pri prevadeni entit do DTO muze slouzit Apache commons >>>> beanutils - pak se to lehce zautomatizuje. >>>> -- >>>> Ondra Medek >>>> >>>> >>>> >>>> >>>> 2010/9/17 Pavel Nemec <neme...@gmail.com>: >>>>> Zdravim konferencei. >>>>> >>>>> Mam takovy pekny zapeklity problem. Na serveru pouzivame jako backend >>>>> sql+hibernate. Data cestuji pomoci jboss+rmi na tlusteho klienta. Tech >>>>> je radove stovky a tak neni ani zdaleka problem ve vykonosti databaze >>>>> nebo jboss serveru. Vse to funguje pomerne pekne. >>>>> >>>>> V soucasne chvili pracujeme na dalsi verzi a reviduji soucasne postupy. >>>>> >>>>> Muj problem je ze pokud objekt nactu z hibernate obsahuje spoustu >>>>> proxy a lazy loaded pod-objektu (kolekci). Zkousel jsem dohledat >>>>> nejake doporucene postupy jak s tlustym klientem pracovat s hibernate, >>>>> ale nenalezl jsem nic uzitecneho. >>>>> >>>>> Nevidim cestu jak poslat objekty obsahujici lazy reference na klienta >>>>> (pres rmi) a jedinou cestu jak z toho vidim prekladat do klientskych >>>>> obrazu techto objektu. To sebou nese samozrejme preklad a dva typy >>>>> objektu. >>>>> >>>>> Na druhou stranu to nenuti klienta resit cokoliv s hibernate. >>>>> Premyslel jsem take osekat Ukladane objekty a vse nahravat pomoci >>>>> EAGER. Ale bojim se ze ani to neni cesta, protoze to Ukladane objekty >>>>> prilis svaze. >>>>> >>>>> Rad bych si usetril praci. A tak hledam reference na to jak to delaji >>>>> ostatni, pripadne cemu se rovnou vyhnout. >>>>> >>>>> Dik, >>>>> Pavel >>>>> >>>> >>> >> >> >> >> -- >> Ondra Medek >> > > > > -- > Ondra Medek >