Dobry den,

pridam take svoji trosku do mlyna... :-)

Tema OpenSessionInView jsme s kolegy rovnez resili.

Nejdriv se nam to zdalo jako idealni reseni, ktere znacne zjednodusuje praci 
tvurcum aplikace.
Reference se dotahuji samy od sebe - pohoda. 

Posleze jsme ale dosli k zaveru, ze Hibernate sice zdanlive cloveku usnadnuje 
zivot, avsak na druhe 
strane prinasi sve problemy. Clovek najednou ztraci kontrolu nad tim, co se s 
databazi deje...

Pres nektere nesporne klady Hibernate zaciname uvazovat o necem jednodussim na 
zpusob iBatis.

mp.


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jan Moravec
Sent: Tuesday, June 12, 2007 11:02 AM
To: 'Java'
Subject: RE: Hibernate aneb jak se (ne)vyhnout DTO

Zdravim,

Tu inicializaci asociaci pred commitem jsem taky delal, ale clovek i presto, na 
muj vkus prilis casto, resi LazyInitializationException diky tomu, ze se metoda 
vola z ruznych kontextu, kde jsou potreba ruzna data (takze tokonci tak, ze 
clovek pridava dalsi a dalsi session.initialize()). Neprijemny side-efekt je 
pak i to, ze se nekde dotahuji data, ktera by se v danem kontextu dotahovat 
vubec nemusela. Tohle mi prijde neuhlidatelne, proto jsem (doufam ze jen) 
docasne zvolil cestu DTO a to i za cenu zvysene pracnosti.

Myslenka s dvema transakcema per session me pred casem taky napadla, nebo jsem 
to mozna nekde cetl. Akorat me dost desi, ze db spojeni zustane alokovano po 
celou dobu renderovani view, coz je vec, kterou ovlivni i rychlost spojeni 
klienta (pokud mi 100 lidi posle request na aplikaci a nebudou pak cist 
response, nebo jen velmi pomalu a dojde na strane serveru z zaplneni bufferu, 
budu mit v aplikaci razem blokovano 100 spojeni). Tuto vlastnost ma samozrejme 
i to reseni se dvema session.

Z meho pohledu idealni reseni by byl nejaky interceptor na 
LazyInitializationException, ktery by dostal referenci na problematicky objekt, 
otevrel by session, dotahl by co potrebuje, session zase rychle zavrel a 
uvolnil tim alokovane db spojeni. Ale toto se obavam neni Hibernate 
podporovano, ale zase nejsem takovy Hibernate guru. Kazdopadne tuto moznost 
aktualne zkoumam.

Honza

Odpovedet emailem