当前位置: 首页 > news >正文

无锡锡山网站建设科技公司有哪些

无锡锡山网站建设,科技公司有哪些,帆软网站开发,南浔区住房和城乡建设局网站事务 Springboot有3种技术方式来实现让加了Transactional的方法能使用数据库事务,分别是"动态代理(运行时织入)"、“编译期织入”和“类加载期织入”。这3种技术都是基于AOP(Aspect Oriented Programming,面向切面编程)思想。(在网…

事务

Springboot有3种技术方式来实现让加了@Transactional的方法能使用数据库事务,分别是"动态代理(运行时织入)"、“编译期织入”和“类加载期织入”。这3种技术都是基于AOP(Aspect Oriented Programming,面向切面编程)思想。(在网上看了很多文章,大家伙儿都把AOP称之为一种技术,其实不然,AOP并不特指一种技术,而是一种编程范式,基于AOP编程范式,不同的编程语言都有自己的实现。)

在开发中,尤其要针对多表操作的时候,要注意事物的原子性,举个例子:

在转账模块,A向B转账100元,表设计为A与B为同一个表,但是A转账之后要将A的金额-100,B的金额+100。

这时候如果不考虑原子性的话,那么更新A的数据成功了,而更新B表失败了,就会导致A的钱已经少了,B却没有收到,这是绝对不允许的,因此需要需要保证「转账」的原子性,「要么一起成功,要么一起失败」。使用@Transactional注解就是专门做这个的。

Transaction 方式(基于动态代理支持)

依赖


<dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>version</version><!-- 5.2.7.RELEASE -->
</dependency>

注解
在启动类上加上@EnableTransactionManagement注解:

@SpringBootApplication
@EnableTransactionManagement
public class TransactionApplication {public static void main(String[] args) {SpringApplication.run(TransactionApplication.class, args);}
}

在需要使用到事务的地方加上@Transactional注解:

    @Transactional@GetMapping("insertExceptionT")public void insert3(){User u1 = new User();u1.setUsername("王五");u1.setPassword("123");userMapper.insert(u1);throw new RuntimeException("测试");}

测试

在测试代码中我们尝试向User表中插入User,分别创建两个接口,一个使用@Transactional注解,一个不使用,并且在两个接口运行的时候都抛出@RuntimeException,查看是否会成功。

@GetMapping("insertException")public void insert2(){User u1 = new User();u1.setUsername("李四");u1.setPassword("123");userMapper.insert(u1);throw new RuntimeException("测试");}@Transactional@GetMapping("insertExceptionT")public void insert3(){User u1 = new User();u1.setUsername("王五");u1.setPassword("123");userMapper.insert(u1);throw new RuntimeException("测试");}

分别访问两个低之后,查看MySQL数据情况:

+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 10 | 李四      | 123      |
+----+----------+----------+

在这里插入图片描述
可以发现没有加@Transactional注解的方法虽然报错了,但是数据依旧插入成功,但是加了注解的方法什么数据都没有插入。

Transactional 失效场景

如果@Transaction标注的是一个私有方法的话,那么可能会导致IDEA测试的时候事务失效,具体的查看下面这篇文章吧,等有时间的时候再补充一下。

参考文章:「掘金」:SpringBoot事务使用及注意事项

http://www.yayakq.cn/news/148855/

相关文章:

  • 北京网站建设方案哪家好门户网站建设厂商名录
  • 湖北省住房部城乡建设厅网站中国建设银行网站首页手机银行
  • 金华企业网站建设公司公司注册资金最低是多少
  • 公司网站建设团队聊城网站定制
  • 网站主题和风格视频网站VIP卡怎么做赠品
  • 网站架构策划私人小型服务器
  • 如何做简洁网站设计沈阳营商环境建设局网站
  • 教育平台oss做视频网站中小企业建站平台
  • iis做的网站如何添加播放器网站建设使用的什么软件有哪些内容
  • 合肥网站建设报价wordpress自动alt
  • 临沂网站建设平台古风网站怎么做
  • 想做找人做网站青海网站建设公司哪家好
  • 营销型网站建设申请域名时公司类型的域名后缀一般是?wordpress lover主题
  • 网站建设与维护理解怎么在网站上做网页
  • 南京网站设计制作排名温州哪里做网站比较好
  • 网站登录按钮点击没反应什么原因各位给推荐个网站
  • 织梦个人网站模版工作室网站建设方案模板
  • 怎样做原创短视频网站新手学做网站优化
  • 广州市品牌网站建设怎么样推广普通话手抄报模板
  • 网站建设价值跨境电商主要平台有哪些
  • 做网站设计的都转行干啥了南京定制网站建设
  • 成都网站设计与制作长治市郊区住房建设局网站
  • 中山蓝图科技网站建设个人旅游网站模板
  • 大学网站建设图wordpress 置顶文章
  • 河南手机网站建设多少钱钢丝网片
  • 网站后台管理系统制作软件百度网盟广告
  • 手机 网站开发软件微博营销成功案例8个
  • wordpress模板商业来宾网站优化
  • 简单的网站开发流程图建设农产品网站总结ppt
  • 昆明网站建设设计宣传片拍摄协议