1. 程式人生 > >Spring 事務——事務管理器

Spring 事務——事務管理器

事務管理器

Spring只是個容器,因此它並不做任何事務的具體實現。他只是提供了事務管理的介面PlatformTransactionManager,具體內容由就由各個事務管理器來實現。
在這裡插入圖片描述

Spring提供了許多內建事務管理器實現:

DataSourceTransactionManager:位於org.springframework.jdbc.datasource包中,資料來源事務管理器,提供對單個javax.sql.DataSource事務管理,用於Spring JDBC抽象框架、iBATIS或MyBatis框架的事務管理;

HibernateTransactionManager

:位於org.springframework.orm.hibernate3包中,提供對單個org.hibernate.SessionFactory事務支援,用於整合Hibernate框架時的事務管理;該事務管理器只支援Hibernate3+版本,且Spring3.0+版本只支援Hibernate3.2+版本;

JpaTransactionManager:位於org.springframework.orm.jpa包中,提供對單個javax.persistence.EntityManagerFactory事務支援,用於整合JPA實現框架時的事務管理;

JtaTransactionManager

:位於org.springframework.transaction.jta包中,提供對分散式事務管理的支援,並將事務管理委託給Java EE應用伺服器事務管理器;

JdoTransactionManager:位於org.springframework.orm.jdo包中,提供對單個javax.jdo.PersistenceManagerFactory事務管理,用於整合JDO框架時的事務管理;

OC4JjtaTransactionManager:位於org.springframework.transaction.jta包中,Spring提供的對OC4J10.1.3+應用伺服器事務管理器的介面卡,此介面卡用於對應用伺服器提供的高階事務的支援;

WebSphereUowTransactionManager:位於org.springframework.transaction.jta包中,Spring提供的對WebSphere 6.0+應用伺服器事務管理器的介面卡,此介面卡用於對應用伺服器提供的高階事務的支援;

WebLogicJtaTransactionManager:位於org.springframework.transaction.jta包中,Spring提供的對WebLogic8.1+應用伺服器事務管理器的介面卡,此介面卡用於對應用伺服器提供的高階事務的支援。

常用的事務管理器配置:

1、JDBC事務 (常用)
使用JDBC來進行持久化,DataSourceTransactionManager會為你處理事務邊界。在 MyBatis 中也常用JDBC事務管理器。

<!-- 介面PlatformTransactionMnager實現 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>
<!-- 開啟事務註解支援 -->
<tx:annotation-driven transaction-manager="txManager" />

注意可以使用<tx:annotation-driven transaction-manager=“txManager” />開啟事務註解的支援(需要在xml檔案中引入tx名稱空間)

2、Hibernate事務

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

3、JPA事務(Java持久化API事務)

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

<bean id="entityManagerFactory"class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" >
    <property name="dataSource" ref="someDataSource"/>
</bean>

4、JTA事務(Java原生API事務)

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