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>