Spring 的事务管理

来源:互联网 发布:php删除首页标签 编辑:程序博客网 时间:2024/06/11 04:46
Spring 提供的事务管理API

PlatformTransactionManager: 平台事务管理器

TransactionDefinition: 事务定义

TransactionStatus: 事务状态

PlatformTransactionManager 通过TransactionDefinition 设置事务相关的信息,管理事务,管理事务过程中,产生一些事务状态,由TransactionStatus 记录。

API详解:
PlatformTransactionManager:接口.
Spring为不同的持久化框架提供了不同PlatformTransactionManager接口实现

org.springframework.jdbc.datasource.DataSourceTransactionManager : 使用Spring JDBC或iBatis 进行持久化数据时使用

org.springframework.orm.hibernate3.HibernateTransactionManager : 使用Hibernate3.0版本进行持久化数据时使用

TransactionDefinition:

  • ISOLATION_DEFAULT: 默认级别 Mysql: repeatable_read oracle read_commited

  • ISOLATION_READ_UNCOMMITTED

  • ISOLATION_READ_COMMITTED
  • ISOLATION_REPEATABLE_READ
  • ISOLATION_SERIALIZABLE

事务的传播行为:(不是JDBC事务管理,用来解决实际开发的问题.)传播行为:解决业务层之间的调用的事务的关系.

  • PROPAGATION_REQUIRED: 支持当前事务,如果不存在 就新建一个 A,B如果A有事务,B使用A的事务,如果A没有事务,B就开启一个新的事务.(A,B是在一个事务中。)

  • PROPAGATION_SUPPORTS:支持当前事务,如果不存在,就不使用事务 A,B 如果A有事务,B使用A的事务,如果A没有事务,B就不使用事务.

  • PROPAGATION_MANDATORY:支持当前事务,如果不存在,抛出异常A,B 如果A有事务,B使用A的事务,如果A没有事务,抛出异常.

  • PROPAGATION_REQUIRES_NEW: 如果有事务存在,挂起当前事务,创建一个新的事务
    A,B 如果A有事务,B将A的事务挂起,重新创建一个新的事务.(A,B不在一个事务中.事务互不影响.)

  • PROPAGATION_NOT_SUPPORTED 以非事务方式运行,如果有事务存在,挂起当前事务
    A,B 非事务的方式运行,A有事务,就会挂起当前的事务.

  • PROPAGATION_NEVER 以非事务方式运行,如果有事务存在,抛出异常

  • PROPAGATION_NESTED 如果当前事务存在,则嵌套事务执行 基于SavePoint技术. A,B A有事务,A执行之后,将A事务执行之后的内容保存到SavePoint.B事务有异常的话,用户需要自己设置事务提交还是回滚.

  • 常用:(重点)

  • PROPAGATION_REQUIRED

  • PROPAGATION_REQUIRES_NEW
  • PROPAGATION_NESTED
原创粉丝点击