Spring 事务与脏读、不可重复读、幻读
2018-06-18 01:33:09来源:未知 阅读 ()
索引:
开源Spring解决方案--lm.solution
参看代码 GitHub:
1.Spring 事务
2.事务行为
一、Spring 事务:
Spring 的事务机制是用统一的机制来处理不同数据访问技术的事务处理。 Spring 的事务机制提供了一个 PlatformTransactionManager 接口,不同的数据访问技术的事务使用不同的接口实现: JDBC -- DataSourceTransactionManager JPA -- JpaTransactionManager Hibernate -- HibernateTransactionManager JDO -- JdoTransactionManager 分布式事务 -- JtaTransactionManager
二、事务行为
@Transactional 的属性可以定制事务的行为: 1.propagation--定义事务的生命周期 默认值--Propagation.REQUIRED Propagation.REQUIRED--方法A调用时没有事务新建一个事务, 当方法A调用另外一个方法B时,方法B将使用相同的事务, 如果此时方法B发生异常数据回滚的时候,整个事务将回滚。 Propagation.REQUIRES_NEW--对于方法A和B, 在方法调用的时候无论是否有事务存在都开启一个新的事务, 如果方法B有异常不会导致A方法的回滚。 Propagation.NESTED--与Propagation.REQUIRES_NEW相同, 支持JDBC,不支持JPA和Hibernate。 Propagation.SUPPORTS--方法调用时,有事务就用事务,没有就不用。 Propagation.NOT_SUPPORTED--强制方法不在事务中执行, 若有事务,在方法调用时,事务会先被挂起。 Propagation.NEVER--强制方法不在事务中执行,若有事务则抛出异常。 Propagation.MANDATORY--强制方法在事务中执行,若无事务则抛出异常。 2.isolation--隔离决定事务的完整性,可以设置多事务对相同数据下的处理机制 默认值--Isolation.DEFAULT Isolation.READ_UNCOMMITTED--对于在A事务里修改了一条记录但没有提交事务, 在B事务可以读取到修改后的记录, 可能导致脏读、不可重复读、以及幻读。 Isolation.READ_COMMITTED--只有当在A事务里修改了一条记录且提交事务之后, B事务才可以读取到提交后的记录, 阻止脏读,但可能导致不可重复读和幻读。 Isolation.REPEATABLE_READ--具有Isolation.READ_COMMITTED的功能, 并且当A事务读取一条记录时,B事务将不能修改这条记录了, 阻止脏读、不可重复读,但可能导致幻读。 Isolation.SERIALIZABLE--此级别下事务是顺序执行的,可阻止脏读、不可重复读、幻读,但开销较大。 Isolation.DEFAULT--使用当前数据库的默认隔离级别, Oracle--READ_COMMITTED SqlServer--READ_COMMITTED MySQL--REPEATABLE_READ 3.timeout--事务过期时间,默认当前数据库事务的过期时间 4.readOnly--指定当前事务是否是只读事务,默认 false 5.rollbackFor--指定哪些异常引起事务回滚, 源码-- Class<? extends Throwable>[] rollbackFor() default {}; 6.noRollbackFor--指定哪些异常不引起事务回滚, 源码-- Class<? extends Throwable>[] noRollbackFor() default {};
蒙
2018-05-03 16:29 周四
2018-05-11 22:41 周五
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Spring系列.ApplicationContext接口 2020-06-11
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- 给你一份超详细 Spring Boot 知识清单 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
