Skip to content

Latest commit

 

History

History
68 lines (55 loc) · 1.68 KB

03-transaction.md

File metadata and controls

68 lines (55 loc) · 1.68 KB

Gestion des transactions

Spring n’implémente pas de transaction manager mais permet de se connecter et de déléguer des appels aux gestionnaire transactionnels.

Plusieurs implémentations sont proposées :

  • Transaction local
  • HibernateTransactionManager
  • JpaTransactionManager
  • DataSourceTransactionManager
  • Transaction managée
  • JtaTransactionManager
  • WebLogicJtaTransactionManager
  • WebSphereUowTransactionManager

Gestion des transactions

Déclaration pour JDBC::

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

Déclaration pour Hibernate::

<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

Déclaration pour JTA::

<tx:jta-transaction-manager/>
  • Spring détecte le serveur d'application et applique le manager adéquat (JtaTransactionManager, WebLogicJtaTransactionManager, WebSphereUowTransactionManager, ...)

Gestion des transactions via @

// activation du support de l'annotation @Transactional
@EnableTransactionManagement
public class PizzaAppConfig {
    @Bean
    public PlatformTransactionManager txManager(DataSource datasource) {
        return new DataSourceTransactionManager(datasource);
    }
}

@Transactional

Positionner sur une classe, toutes les méthodes sont impactées.

@Transactional
public class PizzaService {
}

Positionner sur une méthode, seule la méthode est impactée::

public class PizzaService {

    @Transactional
    public void create(Pizza pizza) {
    }
}