Takže v business vrstve voláte také niečo ako ten filter?

session = getSession(sessionFactory); 
TransactionSynchronizationManager.bindResource(sessionFactory, new
SessionHolder(session));
{
        metodaDAO1();
        metodaDAO2();
}
TransactionSynchronizationManager.unbindResource(sessionFactory);
SessionFactoryUtils.releaseSession(session, sessionFactory);

Pochopil som to správne?

Rastislav "Bedo" Siekel.


> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of Roman Pichlik
> Sent: 16. marca 2006 15:43
> To: Java
> Subject: Re: Spring, Hibernate a HibernateTemplate
> 
> 
> 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