Asi ano, nedokazu to rici, protoze transakce pouzivam deklarativne.

<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
                  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