IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

[Transaction] TransactionManager - transaction durant le temps d'une requête?


Sujet :

Spring Java

  1. #1
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut [Transaction] TransactionManager - transaction durant le temps d'une requête?
    Bonjour tt le monde,

    je suis en train de lutter pour mettre spring en place dans mon environnement (hibernate3). J'ai un problème au niveau de la gestion des transaction. Je ne vois pas trop comment prendre la chose. En fait, je ne sais pas trop comment faire simplement ce que je dois faire.

    J'aimerais limiter les transactions à la durée de vie d'une requête, d'une manière générale, sans avoir à me préoccuper des méthodes qui sont invoquées. En gros:

    1. Requête
    2. Ouverture session hibernate
    3. Démarrage transaction
    4. Exécution code divers
    5. Commit transaction si pas d'exception, rollback sinon
    6. Fermeture session hibernate

    Extrait de mon applicationContext.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <bean id="sessionFactory"
            class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="configLocation">
                <value>classpath:hibernate.cfg.xml</value>
            </property>
            <property name="dataSource">
                <ref bean="myDataSource" />
            </property>
        </bean>
    
        <bean id="transactionManager"
            class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory">
                <ref bean="sessionFactory" />
            </property>
        </bean>
    
    
        <!-- Transaction Interceptor -->
        <bean id="myTransactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
            <property name="transactionManager">
                <ref bean="transactionManager" />
            </property>
            <!-- Certainement ici qu'il faut changer... mais quoi? -->
            <property name="transactionAttributeSource">
                 <value>services.IOrderService.*=PROPAGATION_REQUIRED</value> 
            </property>
        </bean>
    Quelqu'un pourrait m'orienter?

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Par défaut
    Tiens, je te donne le code de gestion de mes transactions d'un petit projet :

    - Il y a le txManager que tu as déjà
    - Le txAdvice qui spécifie que les méthodes get sont read-only (pas de commit).
    - Et finalement mon aspect qui comprend un point de coupure sur mes méthodes business (package x.y.z) et qui référence mon txAdvice.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        	<property name="sessionFactory" ref="mySessionFactory"/>
      	</bean>
     
    	<tx:advice id="txAdvice" transaction-manager="txManager">
    		<tx:attributes>
    			<tx:method name="get*" read-only="true"/>
    			<tx:method name="*"/>
    		</tx:attributes>
    	</tx:advice>
     
    	<aop:config>	
    		<aop:pointcut id="serviceOperation" expression="execution(* x.y.z..*.*(..))"/>
    		<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation"/>
    	</aop:config>

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/09/2009, 14h21
  2. Calcul de temps dans une requète Access 2003
    Par payou70 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 03/08/2009, 18h19
  3. Procédure qui affiche le temps d'une requête
    Par chris_013 dans le forum PL/SQL
    Réponses: 13
    Dernier message: 15/12/2008, 15h12
  4. Réponses: 11
    Dernier message: 25/04/2008, 11h53
  5. Temps d'une requête
    Par Oberown dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 04/04/2006, 11h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo