`

spring事物注意事项

阅读更多
------------------------------------------------
1.spring默认对于runtimeException进行回滚,对于Exception不回滚,若以要对Exception进行回滚,则要使用rollbackFor=异常.class
事物传播行为
2. 一旦对类作用事物,则通过某方法上设置propagation=Propagation.NOT_SUPPORTED来表明不实用事物。
3. 默认情况下是Propagation.REQUIRED,表示若是存在事物,则使用该事物,若是不存在,则自己为该方法创建一个事物。开发中80%都是使用该事物。
4.Propagation.NOT_SUPPORTED,如果这个方法没有事物,则容器不会为该方法创建事物。如果一个已经存在事物的方法调用标注了NOT_SUPPORTED的方法,则执行到
  该方法时会先挂起事物,等到执行完后再恢复事物。
5.Propagation.REQUIREDNEW,不管被调用的方法中是否存在事物,执行到自己时都会挂起方法中的事物,然后为自己开启一个事物。等运行完毕后再回复。
6.Propagation.MANDATORY,表示该方法必须在一个已经存在事物的方法中运行。
7.Propagation.SUPPORT,表示如果一个方法在一个事物的方法中运行,则该方法也会在该事物中运行,成为该事物的一部分,如果该方法在一个不存在事物的方法中运行
  则该方法也在不存在事物的方法中运行。
8.Never表示不在事物中运行。
9.NESTED用于嵌套事物的使用,当在一个已经存在事物的方法中运行标注了NESTED的方法,就会形成嵌套的事物。
  首先开启一个事物,然后在执行NESTED时,设置一个保存点,然后创建一个新的statement执行NESTED方法,如果出现异常则标注NESTED的方法回滚到保存点
  ,接着执行外部的事物,如果外部的事物出现回滚则标注NESTED的事物也会回滚。
readonly:事物的除了设置传播行为,还可以设置是否只读,设置为只读的事物就不能进行更新操作了,效率会更高。
事物的传播行为是由spring实现的。
但是事物的隔离性不是由spring来实现的。而是由数据库来实现的。
isolation:4种
  ReadUncommited 读取未提交数据(会出现脏读,不可重复读,幻读)
  ReadCommited 读取已提交数据(会出现不可重复读,幻读)
  Repeatable 可重复读(出现幻读)
  Serializable 串行化
通过不同的锁来实现上面的隔离级别。
不同数据库默认的隔离级别是不同的。mysql默认是Repeatable

脏读:一个事物读取另一个事物为提交的数据。一个事物做了更新但是未提交。另一个事物读取,之后更新的额事物做了回滚,就会出现这个问题。
不可重复读:即在一个事物中两次读取同一数据,返回的结果是不同的,为了实现可重复读取,一般数据库采取的是快照的技术。第一次读取时记录,之后在统一事物中读取时都是读取记录的。
幻读:一个事物读取到另一个事物的insert语句。

一般使用可重复读的隔离级别。
一般采取数据库默认的隔离级别。

使用spring事物有两种方式,一种是使用注解的,需要打开spring注解配置。然后通过在类中注解进行配置。
                          另一种是基于xml,则需要利用aop。配置切点和通知。
如果只是配置spring数据源,拿到txManager,类是不受spring管理的。
分享到:
评论

相关推荐

    SpringBoot事务和Spring事务详讲

    本文将详细介绍 Spring 和 Spring Boot 中事务的使用方法及其注意事项。 #### 二、事务的基本概念 在讨论 Spring 事务之前,我们先从日常生活中的一个常见场景——取钱说起。当你从 ATM 机上取款时,这一过程可以...

    spring 注解事务管理

    注意事项 - 如果`@Transactional`注解在非public方法上,Spring将不会进行事务管理,因为Spring AOP默认只代理public方法。 - 事务的边界应该是原子性的,也就是说,事务中的所有操作要么全部成功,要么全部失败。...

    Spring声明式事务配置管理方法

    6. **其他注意事项**: - 事务管理器和事务策略的命名应具有模块化,方便维护。 - 配置中可能需要根据实际情况调整事务的隔离级别、超时限制、回滚规则等属性。 7. **声明式事务的四种配置方式**: - XML配置:...

    java springAOP 事务+注释

    2. **Spring事务管理** 在Spring中,事务管理分为编程式和声明式两种。编程式事务管理需要在代码中显式地调用开始、提交、回滚等事务操作,而声明式事务管理则更简洁,通过配置或者注解即可实现,降低了代码的耦合...

    hibernate 事务管理注意事项

    ### hibernate 事务管理注意事项 在使用Hibernate框架进行数据库操作时,事务管理是确保数据一致性和安全性的重要环节。本文将围绕“hibernate 事务管理注意事项”这一主题展开讨论,通过对给定文件中的标题、描述...

    springAop事务配置

    - Spring事务管理器会捕获到方法抛出的异常,并根据配置决定是否回滚事务。 4. **事务的边界** - 事务的边界通常由方法定义,事务管理器会在方法调用开始时开始事务,在方法正常结束时提交事务,遇到异常时回滚...

    springboot中事务管理@Transactional的注意事项与使用场景

    SpringBoot 中事务管理 @Transactional 的注意事项与使用场景 在本篇文章中,我们将详细讲解 SpringBoot 中事务管理 @Transactional 的注意事项与使用场景,以帮助开发者更好地理解和使用 @Transactional 注解。 ...

    SpringAOP整合Hibernate并使用事务

    7. **注意事项** - 配置事务时,注意隔离级别、传播行为和回滚规则的设置,以满足不同的事务需求。 - 事务管理应尽可能局限于需要事务的代码块,避免不必要的性能开销。 - 使用AOP事务管理时,确保被事务管理的...

    spring 事务详解

    - **注意事项**:如果使用此传播行为,即使当前方法所在的事务失败,新开启的事务也会独立提交或回滚。这可能会导致一些意外的行为,因此需要谨慎使用。 5. **PROPAGATION_NOT_SUPPORTED**: - **定义**:以非...

    spring3、 hibernate4 配置声明式事务管理(annotation方式)

    五、注意事项 1. `@Transactional`注解的传播属性:默认为`PROPAGATION_REQUIRED`,表示如果当前没有事务,则新建一个;如果有事务,则加入到当前事务。 2. 事务的隔离级别:默认为`ISOLATION_DEFAULT`,可以根据...

    spring学习之八--Hibernate编程式事务

    而PlatformTransactionManager接口是Spring事务管理的抽象,提供了开始、提交、回滚事务的方法,例如DataSourceTransactionManager(适用于JDBC)和HibernateTransactionManager(适用于Hibernate)。 以下是一个...

    Spring3事务管理——使用@Transactional 注解.rar

    5. **注意事项** - `@Transactional`注解仅在Spring AOP代理能够拦截到的方法上生效,因此,如果在非Spring管理的类或静态方法中使用,事务管理将不起作用。 - 如果事务属性设置不当,可能会导致数据不一致或并发...

    Spring中文文档下载

    对于Spring的文档,可能会涉及如何打开CHM(Compiled HTML Help)文件,以及阅读PDF文档时需要注意的事项。 `Spring3.2中文版.pdf`是Spring 3.2版本的中文文档,此版本进一步优化了对Java EE 6的支持,增强了数据...

    Spring Boot的事务控制.docx

    - **注意事项**: - **propagation属性**:设置事务传播行为。例如,当方法被另一个带有事务的方法调用时,如何处理这个事务。常见的传播行为有`REQUIRED`、`SUPPORTS`、`NOT_SUPPORTED`、`REQUIRES_NEW`等。 -...

    Spring21:2021年Spring学期注意事项

    【Spring21:2021年Spring学期注意事项】 在2021年Spring学期,Spring框架迎来了新的发展,这不仅是技术更新迭代的过程,也是开发者们不断提升编程技能的关键时期。"Spring21"可能指的是Spring Framework的一个特定...

    mybatis和Spring结合例子

    5. **注意事项** - 在Spring中,确保配置了正确的事务管理器类型,对于MyBatis通常是`org.springframework.jdbc.datasource.DataSourceTransactionManager`。 - MyBatis的SqlSession应该在Spring的事务边界内使用...

    springcloud2.0.4+LCN

    六、注意事项 1. 配置LCN时需确保所有微服务的客户端名称不冲突,以免事务管理混乱。 2. 确保`tx-manager`服务的稳定性,它是整个分布式事务的核心。 3. 测试时应充分考虑各种异常场景,确保事务处理的正确性。 ...

    Springboot+Atomikos+Jpa+Mysql实现JTA分布式事务

    `mul-at-master`可能是一个包含该项目源码的文件夹,其中的`使用必读.txt`可能是项目的使用指南或注意事项,你可以参考该文件了解更具体的实现细节。 总之,Spring Boot、Atomikos、JPA和MySQL的组合提供了一种强大...

Global site tag (gtag.js) - Google Analytics