spring事务管理(一)

spring事务管理高层抽象的主要3个接口:

PlatformTransactionManager 事务管理器

TransactionDefinition 事务定义信息(隔离、传播、超时、只读)

TransactionStatus 事务具体运行状态

一、Interface PlatformTransactionManager

Spring为不同的持久化框架提供了不同的PlatformTransactionManager.

内部继承关系如下:

二、Interface TransactionDefinition

1、事务的隔离级别:

DEFAULT:使用后端数据库默认的隔离级别

READ_UNCOMMITTED:允许读取还未提交的改变了的数据。可能导致脏、幻、不可重复读

READ_COMMITTED:允许在并发事务已经提交后读取。可防止脏读,但幻读和不可重复读仍可能发生(Oracle默认使用的隔离级别)

REPEATABLE_READ:对相同字段的多次读取是一致的,除非数据被事务本身改变。可防止脏、不可重复读,但幻读可能发生(Mysql默认使用的隔离级别)

SERIALIZABLE:完全服从ACID的隔离级别,确保不发生脏、幻、不可重复读。这在所有的隔离级别中是最慢的,它是典型的通过完全锁定在事务中涉及的数据表来完成的

2、事务的传播行为:(解决业务层方法之间的相互调用问题)

PROPAGATION_REQUIRED:支持当前事务,如果不存在就新建一个

PROPAGATION_SUPPORTS:支持当前事务,如果不存在,就不使用事务

PROPAGATION_MANDATORY:支持当前事务,如果不存在,抛出异常

PROPAGATION_REQUIRES_NEW:如果有事务存在,挂起当前事务,创建一个新的事务

PROPAGATION_NOT_SUPPORTED:以非事务方式运行,如果有事务存在,挂起当前事务

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

PROPAGATION_NESTED:如果当前事务存在,则嵌套事务执行

三、Interface TransactionStatus

Spring事务管理

Spring支持两种方式事务管理:

  • 编程式的事务管理(实际应用中很少使用)
  • 使用XML配置声明式事务(推荐使用,代码侵入性最小。通过AOP实现)

 后续继续介绍。

posted @ 2016-12-02 14:30  雏鹰。  阅读(167)  评论(0)    收藏  举报