Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Java transazioni con hibernate e eclipse

    Amici ho un terribile problema a lavoro. E' usato spring e hibernate e bisogna scrivere varie cose in due database diversi.
    Il problema è che se uno di questi due database solleva un'eccezione ENTRAMBI i database devono effettuare la rollBack.
    Mi aiutate a capire come posso fare? Vi posto la configurazione del file xml di uno dei due database che gestisce la transazione


    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans default-lazy-init="false">
    <import resource="classpath*:it/inail/spcoop/convenzioneinps/applicationContext-Service.xml"/>

    <bean id="baseTxProxyDB2" abstract="true" class="org.springframework.transaction.interceptor .TransactionProxyFactoryBean">
    <property name="transactionManager">
    <ref bean="transactionManagerDB2"/>
    </property>
    <property name="transactionAttributes">
    <props>
    <prop key="insert*">
    PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED</prop>
    <prop key="update*">
    PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED</prop>
    <prop key="delete*">
    PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED</prop>
    <prop key="*">
    PROPAGATION_SUPPORTS, ISOLATION_READ_COMMITTED, readOnly</prop>
    </props>
    </property>
    <property name="preInterceptors">
    <list>
    <ref bean="checkServiceUserDetailsParameterInterceptorD B2"/>
    </list>
    </property>
    </bean>

    <bean id="checkServiceUserDetailsParameterInterceptorDB2 " class="com.eds.adf.security.CheckServiceUserDetail sParameterInterceptor">
    <property name="securityContextRequired" value="false"/>
    <property name="securityContextConflictPolicy" value="error"/>
    </bean>

    <bean id="convenzioneDb2Service" parent="baseTxProxyDB2">
    <property name="target" ref="convenzioneDb2ServiceImpl"/>
    </bean>


    <!--Please extend this object below this comment to better manage conflicts
    on new MDD transformation.-->
    </beans>

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    86
    Gestire le transazioni con Hibernate è facilissimo. Hai due DB diversi? Non c'è problema.
    Immagino che tu abbia due BusinessDelegate, uno si riferisce ad un DB (primo schema) e l'altro si riferisce al secondo DB(secondo schema). All'interno dell'Action che hai fatto con spring basta fare:

    Codice PHP:
    Transaction  transactionPrimoDB null;
    Transaction transactionSecondoDB secondoDB null;


    SessionFactory primoDBSession Il tuo managerDelPrimoDB.getInstance().dao.getSessionFactory()

    Session sessionPrimoDB =  primoDBSession.getCurrentSession();
    transactionPrimoDB =  sessionPrimoDB.beginTransaction();


    SessionFactory secondoDBSession Il tuo managerDelSecondoDB.getInstance().dao.getSessionFactory()
    Session sessionSecondoDB =  primoDBSession.getCurrentSession();
    transactionSecondoDB =  sessionSecondoDB.beginTransaction();

    //esegui le query dei due db;


    transactionPrimoDB.commit();
    transactionSecondoDB.commit(); 

    ovviamente tutto questo all'interno di un try e cath. Nel Finally metti semplicemente un controllo if che dice:

    Codice PHP:
    se transactionPrimoDB != null
    transactionPrimoDB
    .rollback(); 
    per maggiore sicurezza fai il controllo anche su transactionSecondoDB
    Shashia

  3. #3
    Ti ringrazio ma io avrei bisogno della configurazione xml

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    86
    Non so allora...io le transazioni li gestisco così...
    Shashia

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.