Zdravim
Jeste bych doplnil dulezitou vec: Swing aplikace je typicky vicevlaknova a
vlakna si predavaji data, coz se velmi spatne snasi s Hibernate:
varianta 1) Hibernate session neni thread-safe, takze s tou globalni session
muze pracovat jen jedno vlakno. To se da zajistit, ale nesmi se pouzivat lazy
vazby.
varianta 2) To je lepsi, ale nesmi se pouzivat lazy vazby (pri pokusu o
pristup k nenahranym datum dojde k vyjimce).
V obou pripadech to lze vyresit pouzitim Data Transfer Objects (Value
Objects), ale je to docela neprijemne.
Alternativou je pouzivat primo Hibernate objekty, ale poctive povypinat lazy
vazby a vzdy vsechno nahravat automaticky nebo rucne (to je stejne lepsi kvuli
N+1 problemu a ladeni vykonu vubec).
Krome toho je nutne pamatovat na to, ze v event handling vlakne se nesmi nikdy
s Hibernate pracovat.
Kamil Podlesak
> -Original Message-
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Behalf Of Lukas Barton
> Sent: Wednesday, October 10, 2007 8:24 AM
> To: Java
> Subject: Re: Hibernate session a jeji existence
>
>
> Roman Pichlik napsal(a):
> >> 1) Je vyhodnejsi po celou dobu behu aplikace nechat
> otevrenou
> >> jednu
> >> session
> >>
> >> 2) Nebo je vyhodnejsi pro kazdou logickou
> posloupnost operaci
> >> otevrit
> >> novou session a po ukonceni session zavrit?
> >
> > 2 protoze
> >
> > - kratka doba alokace databazoveho pripojeni
> > - moznost mit oddelene (nezavisle) operace s ruznou Flush strategii
> > - mensi pametove naroky (session nemusi drzet zbytecne mnozstvi
> > referenci)
> >
> Prvni bod z vyse uvedeneho zcela neplati.
> Session lze odpojit a tim uvolnit databazove pripojeni.
>
> Dalsi argumenty pro 2:
> - flush (commit) na session, ktera obsahuje mnoho objektu trva
> neskutecne dlouho - misto mikrosekund i nekolik desitek sekund
> - flush (commit) se vzdy tyka vsech objektu v session - tam kdebyste
> nechtel ulozit zmeny musite dusledne evictovat (odebirat
> objekty ze session)
>
> Nevyhoda 2 je:
> - moc nevyuzijete lazy inicializaci, protoze nemuze pouzit
> navrhovy vzor
> open session in view - nevite kdy vam view na jakou propertu
> z modelu sahne
>
> Ja osobne mam dobrou zkusenost s (2) (dobry je to kombinovat i se
> Springem) a pouzivanim DTO (VO) pripadne pouzitim primo mapovanych
> objektu, ktere jsou v DOA vrstve kompletne inicializovani
> resp. nemaji
> zadne lazy property/vazby.
>
> Lukas
>
>
>
>
>