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 
> ______________________________________________________________________
> 


Odpovedet emailem