Spring事务

130 阅读2分钟

1、事务简介

事务作用:一组操作要不全部成功,要么全部失败,保持数据一致性。

事务特性(ACID):

Atomic原子性:确保所有操作要么全都发生,要么都不发生

Consitent一致性:事务前后,数据均处于正确状态,数据不应该被破坏

Isolation隔离性:事务彼此隔离,用户间操作不相互影响

Durable持久性:事务一旦完成,结果应该持久化

Spring对事务管理的支持:

1)编程式事务

编程式事务可以清晰地定义事务的边界,可以实现细粒度的事务控制。

2)声明式事务

只需要在配置文件中配置事务,将操作纳入事务管理,解除了和代码耦合,对应用代码影响最小。

2、Spring事务管理器

Spring并不直接管理事务,而是通过多种事务管理器,将管理事务的责任交给JTA或相应的持久性机制所提供的某个特定平台的事务实现。

Spring提供了顶层接口PlatformTransactionManager,并提供了扩展接口ResorceTransactionManager和抽象实现类AbstractPlatformTransactionManager。

一般而言,每一种事务实现的类图如下:

事务类图

3、常见事务管理器:

1)DataSourceTransactionManager : 用于Spring JDBC抽象框架、iBatis或MyBatis框架事务管理 2)JpaTransactionManager : 用于JPA实现框架事务管理 3)HibernateTransactionManager : 提供对Hibernate框架事务管理 ……

JDBC事务 使用Spring的DataSourceTransactionManager来管理事务。

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

使用ibatis、mybatis持久框架同样采用此配置。 dataSource属性定义了数据源,通过数据源获取javax.sql.Connection数据库连接,从而调用该链接的commit()和rollback(0方法来提交或回滚事务。

Hibernate事务 使用Spring的HibernateTransactionManager来管理事务。

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

JPA事务 JAVA持久化标准(Java Persistent API, JPA),使用Spring提供的JpaTransactionManager来管理事务。

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