(笔记)Spring实战_事务管理(2)_选择事务管理器

Spring并不直接管理事务,而是提供了多种事务管理器,它们将事务管理的职责委托给JTA或其他持久化机制所提供的平台相关的事务实现。

事务管理器(org.framework.*)使用场景
jdbc.datasource.DataSourceTransactionManager用于Spring对JDBC抽象的支持。也可用于使用iBATIS进行持久化的场景
orm.hibernate3.HibernateTransactionManager用于Hibernate3进行持久化
orm.jpa.JpaTransactionManager用于Java持久化API进行持久化

为了使用事务管理器,你需要将其声明在应用程序上下文中。
1.JDBC事务

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

2.Hibernate事务

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

3.Java持久化API事务

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
        <property name="jpaDialect" ref="jpaDialect" />
    </bean>

JpaTransactionManager还支持将事务应用于简单的JDBC操作之中,这些JDBC操作所使用的DataSource与EntityManagerFactory所使用的DataSource必须是相同的。为了做到这一点,JpaTransactionManager必须装配一个JpaDialect的实现。
需要重点指出的是,JpaDialect实现必须同时支持JPA/JDBC访问。所有Spring所支持的特定厂商JpaDialect实现(EclipseLinkJpaDialect、HibernateJpaDialect、OpenJpaDialect、TopLinkJpaDialect)都提供了对JPA和JDBC混合的支持,而DefaultJpaDialect并不支持。
4.JTA事务
如果前面提到的事务管理器都不能满足你的需求或者你的事务需要跨多个事务资源(例如,两个或更多的数据库),你需要使用JtaTransactionManager。

    <bean id="transactionManager"
        class="org.springframework.transaction.jta.JtaTransactionManager">
        <property name="transactionManagerName" value="java:/TransactionManager" />
    </bean>

transactionManagerName属性指明了要在JNDI上查找JTA事务管理器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值