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 <[email protected]>: > 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 <[email protected]>: >> 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 <[email protected]> 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 <[email protected]>: >>>> 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
