Vďaka za nasmerovanie. Takto mi to chodí (aspoň v JUnit testoch). Myslím, že by nezaškodil trochu obšírnejší manuál k Hibernate. Aspoň že je ten zdroják.
Rastislav "Bedo" Siekel. > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Roman Pichlik > Sent: 16. marca 2006 16:12 > To: Java > Subject: Re: Spring, Hibernate a HibernateTemplate > > > Asi ano, nedokazu to rici, protoze transakce pouzivam deklarativne. > > <bean id="baseTransactionProxy" > class="org.springframework.transaction.interceptor.Transaction > ProxyFactoryBean" > abstract="true"> > <property name="transactionManager" ref="transactionManager"/> > <property name="transactionAttributes"> > <props> > <prop key="save*">PROPAGATION_REQUIRED</prop> > <prop key="add*">PROPAGATION_REQUIRED</prop> > <prop key="update*">PROPAGATION_REQUIRED</prop> > <prop key="delete*">PROPAGATION_REQUIRED</prop> > </props> > </property> > </bean> > > <bean id="businessObject" parent="baseTransactionProxy"> > <property name="target"> > <bean class="com.foo.BusinessObject"> > <property name="catDao"><ref local="dao1"/></property> > <property name="geoDao"><ref local="dao2"/></property> > </bean> > </property> > </bean> > > public class BusinessObject{ > Dao1; > Dao2; > > /** > * Po celou metodu update mam session otevrenou > */ > public void update(){ > X x = dao1.findSomething(); > x.getSomeLazyCollection(); > . > . > . > } > } > > Rastislav Siekel napsal(a): > > 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 > >> > ______________________________________________________________________ > >> > > > > > > -- > 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 > ______________________________________________________________________ >
