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