添加事物管理
在Spring Boot中,当我们使用了spring-boot-starter-jdbc或spring-boot-starter-data-jpa依赖的时候,框架会自
动默认分别注入DataSourceTransactionManager或JpaTransactionManager。所以我们不需要任何额外配置就可
以用@Transactional注解进行事务的使用
操作(使用方法):
Spring Boot 使用事务非常简单,首先在启动类上使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法(或类)上添加注解 @Transactional( 建议使用 @Transactional(rollbackFor = Exception.class) ) 便可。
注意:
在@Transactional注解中如果不配置rollbackFor属性,那么事物只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事物在遇到 非运行时异常 时也回滚。
运行时异常:程序运行过程中才有可能出现的异常,这种异常一般是由程序逻辑错误引起的。如:NullPointerException、IndexOutOfBoundsException 非运行时异常:JAVA编译器强制要求我们必需对出现的这些异常进行catch并处理,否则程序就不能编译通过的异常。如:SQLException、SQLException |
如图案列一(将注解加在类上面):
如图案列二(将注解加在方法上面):
事务的隔离级别
含义:
隔离级别是指在发生并发的事务之间的隔离程度,与我们开发时候主要相关的场景包括:脏读、不可重复读、幻
读。
|
操作(使用方法):
通过使用 isolation 属性设置,例如:
开发时候建议改为:@Transactional(isolation = READ_COMMITTED)
原因如下:
org.springframework.transaction.annotation.Isolation 枚举类中定义了五个表示隔离
级别的值:
public enum Isolation {
DEFAULT(-1),
READ_UNCOMMITTED(1),
READ_COMMITTED(2), //建议设置为这个级别
REPEATABLE_READ(4),
SERIALIZABLE(8);
}
DEFAULT :这是默认值,表示使用底层数据库的默认隔离级别。对大部分数据库而言,通常这值就
|