Zdravim,
ve swingu to reším tak, že načítám vazby podle potřeby konkrétního
zbrazení, pro každý dialog mám pomocnou třídu, která načte  požadované
věty a inicializuje potřebné asociace, pokud potřebuju zobrazit detail
nebo vstoupit do editace, vyvolám metodu obslužné třídy, která mi vrátí
nový záznam s jinak načtenými asociacemi.

Jan Moravec napsal(a):
> Zdravim,
>
> Mam obecny problem s pouzivanim ORM frameworku u webovych aplikaci, ktery se 
> mi nedari uspokojive vyresit. Kdyz jsem si ted precetl clanek Dagiho o DTO na 
> java.cz a o tom, jak je to opomijeny vzor, pripomelo mi to muj boj s DTO.
>
> Pouzivam Hibernate a puvodne jsem si (naivne) myslel, ze zivot bude sladky, 
> ze Hibernate domenove objekty budu vracet do view a to mi z nich bude cist a 
> zbavim se nutnosti psat DTO tridy. To jsem si myslel do doby, nez jsem poprve 
> uvidel vyjimky s hlaskou "Session is closed". Duvod vyjimky je zcela 
> pochopitelny, protoze Hibernate session (dale jen HS) mi managuje JTA, takze 
> ve view je session jiz uzavrena a kdyz se view pokousi dotahnout nejakou lazy 
> asociaci, vyhodi zminovanou vyjimku. 
>
> Managovat HS v nejakem filtru ve view vrstve mi prijde nepouzitelne pro vetsi 
> aplikace s ohledem na to, ze view muze provadet dost dlouhe akce, napriklad 
> volat web-service, provadet nejaky casove slozitejsi vypocet apod. Mangovani 
> HS ve filtru (tzv. open-session-in-view pattern) by tedy znamenalo:
>
> 1) HS a potazmo db spojeni budou alokovany na dlouhou dobu (sekundy az 
> desitky sekund) -> vycerpani spojeni pri vetsi zatezi aplikace, nektere 
> stranky/akce view treba s db vubec nepracuji, tak proc vytvaret HS a alokovat 
> db spojeni
>
> 2) Pri otevreni HS bude db spojeni dlouho viset v necommitnutem stavu 
> (vlastne po celou dobu renderovani view) -> vyskyt locku/deadlocku v db.
>
> Jak z toho ven?
>
> Momentalne resim tak, ze pro domenove objekty Hibernate pisu DTO objekty a 
> skripu zubama (dvakrat pisu to same, zmeny v domenovych objektech se musi 
> propagovat do DTO, nutnost rucne "presypavat" data mezi domenovymi objekty a 
> DTO). Zkratka z DTO patternu nejsem nijak zvlast unesen, alespon ne v tomto 
> kontextu. Napadlo me pouzivat 2 session, ale to jsem nikde nevidel v akci a 
> taky to nemam jeste uplne promyslene:
>
> 1) lazy alokovana session, ktere je striktne read-only a je managovana ve view
> 2) standardni "vykona" session managovana pres JTA
>
> Pak je potreba jen nejak automaticky zajistit (napr. pres nejaky JTA 
> interceptor), ze domenove objekty Hibernate predavane do view se sami 
> asociuji s tou read-only session a bude tedy mozne se vyhnout DTO patternu 
> pro praci s domenovymi daty a pomoci te read-only session dotahovat i lazy 
> asociace dle potreb view.
>
> Nepouzivate toto nekdo?
>
> Diky,
> Honza
>
>   

Odpovedet emailem