Pokud nepouzijete ten zmineny filter, tak je otevreni a zavreni session omezene na transakci. Ve vasem pripade mate transakci nastavenou na DAO objektu.

Ja osobne to resim tak, ze transakce je na urovni business vrstvy, to znamena ze session je otevrana po dobu prace v business logice. Napriklad UI vrstva, ktera je nad business vrstvou uz ma session uzavrenou.

Vrstvy
-----------
UI        | Uzavrena session
----------- --- definice transakce
Business  |
----      |  Otevrena session
DAO       V
----------- ---

Rastislav Siekel napsal(a):
Kolegovia,
začínam s Hibernate a mám problém samozrejme s LazyInitializationException.
Mám v Springu potomka HibernateDaoSupport, kde mám DAO metódu, ktorá vracia
List. Nejako takto:
  ...
  HibernateTemplate template = getHibernateTemplate();
  List list = template.find("from EngineStationTO");
  ...

Ten EngineStationTO obsahuje aj nejaké asociácie, ktoré sa pri default
nastavení lazy select fetching samozrejme nenačítajú. Sranda je však tá, že
samotná metóda find() zatvára session a teda nemám možnosť dotiahnuť tie
asociácie žiadnym spôsobom (napr. Hibernate.initialize(list) ) takže vždy
dostanem LazyInitializationException. Pozeral som sa, ako to rieši napr. Springový web filter
OpenSessionInViewFilter. Ten na začiatku requestu použije:
session = getSession(sessionFactory);
TransactionSynchronizationManager.bindResource(sessionFactory, new
SessionHolder(session));
a na konci:
TransactionSynchronizationManager.unbindResource(sessionFactory);

ale mimo web aplikácie? Zdá sa mi, že by to mohlo ísť aj jednoduchšie.
Samozrejme, môžem zakázať lazy inicializáciu, alebo nakonfigurovať objekty
bez asociácií, ale to by bola škoda.
Rastislav "Bedo" Siekel. _____
Ing. Rastislav Siekel
Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia
E-mail : <mailto:[EMAIL PROTECTED]> <[EMAIL PROTECTED]> Tel : 041/562 54 91
Fax : 041/562 54 97
Mobil : 0905 34 00 20

--
S pozdravem Roman "Dagi" Pichlik

/* http://www.sweb.cz/pichlik/ Blog pro kodery */


______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email ______________________________________________________________________

Odpovedet emailem