当前位置: 移动技术网 > IT编程>开发语言>Java > Spring 事务隔离与事务传播的详解与对比

Spring 事务隔离与事务传播的详解与对比

2017年12月08日  | 移动技术网IT编程  | 我要评论

巨阴族怎样交配,学电脑,乔伊费舍尔

spring 事务隔离与事务传播的详解与对比

spring是ssh中的管理员,负责管理其它框架,协调各个部分的工作。今天一起学习一下spring的事务管理。spring的事务管理分为声明式跟编程式。声明式就是在spring的配置文件中进行相关配置;编程式就是用注解的方式写到代码里。

spring配置文件中关于事务配置总是由三个组成部分,分别是datasource、transactionmanager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 datasource、 transactionmanager这两部分只是会根据数据访问方式有所变化,比如使用hibernate进行数据访问时,datasource实际为 sessionfactory,transactionmanager的实现为hibernatetransactionmanager。

spring的事务隔离级别

  • isolation_default:使用数据库默认的隔离级别。
  • isolation_read_uncommitted:允许读取改变了的还未提交的数据,可能导致脏读、不可重复读和幻读。
  • isolation_read committed:允许并发事务提交之后读取,可以避免脏读,可能导致重复读和幻读。
  • isolation_repeatable_read:对相同字段的多次读取结果一致,可导致幻读。
  • isolation_serializable:完全服从acid的原则,确保不发生脏读、不可重复读和幻读。

可以根据自己的系统对数据的要求采取适应的隔离级别,因为隔离牵涉到锁定数据库中的记录,对数据正性要求越严格,并发的性能也越差。

spring的事务传播行为

  • spring事务的传播行为说的是当一个方法调用另一个方法时,事务该如何操作。
  • propagation_mandatory:该方法必须运行在一个事务中。如果当前事务不存在则抛出异常。
  • propagation_nested:如果当前存在一个事务,则该方法运行在一个嵌套的事务中。被嵌套的事务可以从当前事务中单独的提交和回滚。如果当前不存在事务,则开始一个新的事务。各厂商对这种传播行为的支持参差不齐,使用时需注意。
  • propagation_never:当前方法不应该运行在一个事务中。如果当前存在一个事务,则抛出异常。
  • propagation_not_supported:当前方法不应该运行在一个事务中。如果一个事务正在运行,它将在该方法的运行期间挂起。
  • propagation_required:该方法必须运行在一个事务中。如果一个事务正在运行,该方法将运行在这个事务中。否则,就开始一个新的事务。
  • propagation_requires_new:该方法必须运行在自己的事务中。它将启动一个新的事务。如果一个现有的事务正在运行,将在这个方法的运行期间挂起。
  • propagation_supports:当前方法不需要事务处理环境,但如果一个事务已经在运行的话,这个方法也可以在这个事务里运行。

以上就是spring 事务隔离与事务传播的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网