Spring中之工作

全局工作和本土工作

1、全局工作

       基本的支撑分布式事务;

      
在正儿八经,主要为此来化解分布式事务的方案是使柔性事务。柔性事务包括几种植类型:两阶段型、补偿型、异步确保型和极要命大力通知型。

图片 1

  事务管理器控制着全局工作,管理作业生命周期,并协调资源。资源管理器负责控制以及治本实际上资源。在全局工作中,为了保险所有的操作可以一次性要么全付,要么全败。事务管理器和资源管理器之间的事体操作的操纵是使2PC(两品级提交)来进行的。

2、本地工作

       JDBC事务

 图片 2

ACID,指数据库事务是执行的季单基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

声明式事务以及编程式事务

1 public interface PlatformTransactionManager {
2 
3     TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException;
4 
5     void commit(TransactionStatus status) throws TransactionException;
6 
7     void rollback(TransactionStatus status) throws TransactionException;
8 }

 

1、TransactionDefinition的说明

  •  隔离级别

本着承诺数据库被的隔断级别:http://www.cnblogs.com/bigshark/p/7912184.html

ISOLATION_DEFAULT

使用数据库的隔离级别

ISOLATION_READ_UNCOMMITTED

未提交读

ISOLATION_READ_COMMITTED

提交读

ISOLATION_REPEATABLE_READ

可重复读-Mysql默认级别

ISOLATION_SERIALIZABLE

可串行化

  • 盛传行为

PROPAGATION_REQUIRED

方法必须运行在事务中,如果当前事务存在,方法会在当前事务运行,否则启动一个新事务。

PROPAGATION_SUPPORTS

方法不需要事务上下文,但是如果存在当前事务,则会在这个事务中运行。

PROPAGATION_MANDATORY

方法必须运行在事务中,如果当前事务不存在,则抛出异常。

PROPAGATION_REQUIRES_NEW

方法必须运行它自己的事务中,如果存在当前事务,事务将被挂起。

PROPAGATION_NOT_SUPPORTED

方法不应该运行在事务中,如果存在当前事务,事务将被挂起。

PROPAGATION_NEVER

方法不应该运行在事务上下文中,如果当前有事务在运行,则抛出异常。

PROPAGATION_NESTED

如果当前已经存在一个事物,方法会在嵌套事务中运行,嵌套事务可以独立提交或回滚;如果不存在事务,其行为和PROPAGATION_REQUIRED一样。

  • 逾期设置setTimeout(int timeout),默认-1
  • 是不是仅仅读setReadOnly(boolean
    readOnly),默认false,事务告知对数据库只进行读操作,数据库可利用工作的特念特性开展一些优化。
  • 回滚规则execute(TransactionCallback<T> action)。

2、TransactionStatus提供有事务API通用的,用来决定作业执行及工作状态查询的大概方法

 1 public interface TransactionStatus extends SavepointManager {
 2 
 3     boolean isNewTransaction();
 4 
 5     boolean hasSavepoint();
 6 
 7     void setRollbackOnly();
 8 
 9     boolean isRollbackOnly();
10 
11     void flush();
12 
13     boolean isCompleted();
14 
15 }

3、PlatformTransactionManager的使用要采用DataSource数据源,DataSourceTransactionManager支持JDBC和MyBatis场景。

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

Spring的声明式事务是由此Spring AOP实现之。

调用事务代理的措施的进程:

 图片 3

 

Spring提供个别种植编程式事务之艺术:TransactionTemplate、PlatformTransactionManager

 

资料

Spring官方文档

《Spring In Action》

 

网站地图xml地图