2021-06-30

这几个事务案例会回滚吗?最后一个90%的人判断错了...

下面这个问题源于前几日在我们的Spring技术交流群里,一个群友提出的关于事务回滚的疑问。

在讨论过程中,我尝试去复现群友提出的问题场景,发现了另外一个可能让大家会迷惑的情况。

当时在群里说了结果和原因,但微信群范围有限,所以单独写篇文章,拿出来给大家看看,顺便考考大家,对这块是否了解。

问题描述

这个问题的基础工程我用了之前Spring Boot 2.x基础教程中《使用Spring Data JPA访问MySQL》的案例。

你可以通过下面仓库中的chapter3-4目录获取基础工程:

  • Github:https://github.com/dyc87112/SpringBoot-Learning/
  • Gitee:https://gitee.com/didispace/SpringBoot-Learning/

在这个工程中,定义一个名为User的实体:

@Entity@Data@NoArgsConstructorpublic class User { @Id @GeneratedValue private Long id; @Size(max = 5) private String name; @Max(50) private Integer age; public User(String name, Integer age) {  this.name = name;  this.age = age; }}

这里name设置了长度为5,这样可以通过insert语句中的name超长,让其抛出异常,从而可以测试事务的触发。

另外工程中还包含了Spring Data Jpa的数据访问对象UserRepository,用来实现对User实体的数据操作,这里就不放具体代码了。

问题来了

这里数据库采用MySQL 5.7,存储引擎为InnoDB,使用默认事务级别。

下面来调整下这四个问题吧:

问题一:test1会不会回滚?

@Transactionalpublic void test1() { userRepository.save(new User("AAA", 10)); throw new RuntimeException();}

问题二:test2会不会回滚?

@Transactionalpublic void test2() { userRepository.save(new User("AAA", 10)); try {  throw new RuntimeException(); } catch (Exception e) {  log.error("异常捕获:", e); }}

问题三:test3会不会回滚?(第二句插入name超长)

@Transactionalpublic void test3() { userRepository.save(new User("BBB", 10)); userRepository.save(new User("123456", 20));}

问题四:test4会不会回滚?(第二句插入name超长)

@Transactio......

原文转载:http://www.shaoqun.com/a/836181.html

跨境电商:https://www.ikjzd.com/

预售:https://www.ikjzd.com/w/889

lithium:https://www.ikjzd.com/w/2505

三维度科技:https://www.ikjzd.com/w/1312


下面这个问题源于前几日在我们的Spring技术交流群里,一个群友提出的关于事务回滚的疑问。在讨论过程中,我尝试去复现群友提出的问题场景,发现了另外一个可能让大家会迷惑的情况。当时在群里说了结果和原因,但微信群范围有限,所以单独写篇文章,拿出来给大家看看,顺便考考大家,对这块是否了解。问题描述这个问题的基础工程我用了之前SpringBoot2.x基础教程中《使用SpringDataJPA访问MySQ
名人堂是什么:https://www.ikjzd.com/w/1082
跨境电商卖家,如何通过"包装插页"留住用户? :https://www.ikjzd.com/articles/96741
历经亚马逊525这一劫,卖家们该如何自救?:https://www.ikjzd.com/articles/96743
账号刚解封,Listing竟回到解放前?:https://www.ikjzd.com/articles/96744
亚马逊用这种手法优化Listing增加产品竞争力:https://www.ikjzd.com/articles/96745
口述:妹妹和我男友爱爱时故意呻吟口述爱爱妹妹:http://lady.shaoqun.com/a/25015.html
撞击旗袍丝袜老师 小坏蛋你太厉害了我受不了了:http://lady.shaoqun.com/m/a/247953.html
交换第一次,我的第一次换妻真实感受:http://www.30bags.com/m/a/249690.html
晚上去公园散步。一个人在公园里真好。:http://lady.shaoqun.com/a/391617.html
2021全球跨境电商节延期(最新时间):http://www.30bags.com/a/462642.html
2021深圳国际酒展延期举办(最新时间):http://www.30bags.com/a/462643.html
2021深圳春季茶博会延期举办(最新时间):http://www.30bags.com/a/462644.html

No comments:

Post a Comment