事务 包括ACID 四个性质 详见我前面的文章 “acid-事务的原子性、一致性、隔离性、持久性”
包含一个或多个参数:传播行为,隔离级别,只读提示、事务超时间隔
一 传播行为: 新的事务是否要被启用或挂起,方法是否在事务中
1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开
启
2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非
事务的执行
3. PROPAGATION_MANDATORY: 该方法必须运行在一个事务内。如果没有一个活动的事务
,则抛出异常。
4. PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在,则
将这个存在的事务挂起。
5. PROPAGATION_NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。
6. PROPAGATION_NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常
7. PROPAGATION_NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中. 如
果没有活动事务,
则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行
二 隔离级别
一般用第5种隔离方式
事务执行的时候,可能存在 脏读 不可重复读 和 幻读等情况。因此事务之间有五种隔离:
1. ISOLATION_DEFAULT: 这是一个PlatfromTransactionManager默认的隔离级别,使
用数据库默认的事务隔离级别.
另外四个与JDBC的隔离级别相对应
2. ISOLATION_READ_UNCOMMITTED: 这是事务最低的隔离级别,它充许令外一个事务可
以看到这个事务未提交的数据。
这种隔离级别会产生脏读,不可重复读和幻像读。
3. ISOLATION_READ_COMMITTED: 允许事务已经提交后读取,可防止脏读,但不可
防止不可重复读和幻像读
4. ISOLATION_REPEATABLE_READ:对相同字段的多次读取的结果是一致的 这种事务隔
离级别可以防止脏读,不可重复读。但是可能出现幻像读。
它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的
情况产生(不可重复读)。
5. ISOLATION_SERIALIZABLE 完全符合ACID的级别,事务顺序执行。
三 只读 利用事务的只读特性,将可能启动新事务的传播行为标为只读才有意义,即传播行为如下:
PROPAGATION_REQUIRED
PROPAGATION_REQUIRES_NEW
PROPAGATION_NESTED
四 事务超时间隔 启用新事务的 设置启动超时 才有意义 即传播行为同三
分享到:
相关推荐
Spring事务管理Demo
spring事务管理 配置文件等详解
Spring事务管理教程,详细讲解了Spring中的事务管理,包括声明式事务,注解式事务,以及事务配置等等
Spring事务管理.pdf 1.资料 2.本地事务与分布式事务 3.编程式模型 4.宣告式模型
Synchronized锁在Spring事务管理下,导致线程不安全。
spring 事务管理的理解
Spring事务管理(全),需要的可下载!
spring事务管理几种方式代码实例:涉及编程式事务,声明式事务之拦截器代理方式、AOP切面通知方式、AspectJ注解方式,通过不同方式实例代码展现,总结spring事务管理的一般规律,从宏观上加深理解spring事务管理特性...
在该JAR包的org.springframework.transaction包中,有3个接口文件PlatformTransactionManager、TransactionDefinition和TransactionStatus,如下图所示: Spring事务管理的三个核心接口 5.1.1 事务管理的核心接口 1....
Spring事务管理4种方式 入门级 最简单demo PlatformTransactionManager TransactionTemplate
Spring事务管理中所需要的jar包是 spring-tx-3.2.0.RELEASE.jar
Spring 事务管理,Spring 事务管理,Spring 事务管理,Spring 事务管理
详细介绍Spring事务管理
此包含有所有Spring事务管理开发所需要的Jar包,包含框架、核心、表达式、日志、编译、事务切面aop、数据库连接、单元测试、框架文本等jar包。
Spring事务管理A方法内部调用B方法的回滚问题测试代码