空枝|大佬把Spring框架总结的「无比详细」,看完还说不懂别学了( 二 )
依赖关系配置:
测试:
9、spring中的aop事务
事务的四大基本特性:事物的概述⑴ 原子性(Atomicity)
原子性是指事务包含的所有操作要么全部成功 , 要么全部失败回滚 , 因此事务的操作如果成功就必须要完全应用到数据库 , 如果操作失败则不能对数据库有任何影响 。
⑵ 一致性(Consistency)
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态 , 也就是说一个事务执行之前和执行之后都必须处于一致性状态 。
拿转账来说 , 假设用户A和用户B两者的钱加起来一共是5000 , 那么不管A和B之间如何转账 , 转几次账 , 事务结束后两个用户的钱相加起来应该还得是5000 , 这就是事务的一致性 。
⑶ 隔离性(Isolation)
隔离性是当多个用户并发访问数据库时 , 比如操作同一张表时 , 数据库为每一个用户开启的事务 , 不能被其他事务的操作所干扰 , 多个并发事务之间要相互隔离 。
即要达到这么一种效果:对于任意两个并发的事务T1和T2 , 在事务T1看来 , T2要么在T1开始之前就已经结束 , 要么在T1结束之后才开始 , 这样每个事务都感觉不到有其他事务在并发地执行 。
关于事务的隔离性数据库提供了多种隔离级别 , 稍后会介绍到 。
⑷ 持久性(Durability)
持久性是指一个事务一旦被提交了 , 那么对数据库中的数据的改变就是永久性的 , 即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作 。
例如我们在使用JDBC操作数据库时 , 在提交事务方法后 , 提示用户事务操作完成 , 当我们程序执行完成直到看到提示后 , 就可以认定事务以及正确提交 , 即使这时候数据库出现了问题 , 也必须要将我们的事务完全执行完成 , 否则就会造成我们看到提示事务处理完毕 , 但是数据库因为故障而没有执行事务的重大错误 。
关于事务的隔离级别我之前发布了一篇文章:
spring中事务的分类:spring中事务可以分为编程式事务控制和声明式事务控制 。
编程式事务控制
自己手动控制事务 , 就叫做编程式事务控制 。
Jdbc代码:
Conn.setAutoCommit(false); // 设置手动控制事务
Hibernate代码:
Session.beginTransaction(); // 开启一个事务
【细粒度的事务控制: 可以对指定的方法、指定的方法的某几行添加事务控制】
(比较灵活 , 但开发起来比较繁琐: 每次都要开启、提交、回滚.)
声明式事务控制
Spring提供了对事务的管理, 这个就叫声明式事务管理 。
Spring提供了对事务控制的实现 。 用户如果想用Spring的声明式事务管理 , 只需要在配置文件中配置即可; 不想使用时直接移除配置 。 这个实现了对事务控制的最大程度的解耦 。
Spring声明式事务管理 , 核心实现就是基于Aop 。
【粗粒度的事务控制: 只能给整个方法应用事务 , 不可以对方法的某几行应用事务 。 】
- 笑看尘世|Spring4基础二二-AOP篇-通知(2)-通知详解
- 一味宠爱|Springboot整合K8s读取ConfigMap刷新配置
- 小熊科技|从零学ELK系列(十):SpringBoot接入ELK升级版
- 空枝|一个漂亮的开源HTML5音乐播放器——APlayer
- 空枝|这台手机,我整整等了三年,终于要发布
- 空枝|华为云手机革新概念、与我书中未来手机革新概念同理
- 草莓味的棉花糖|震碎认知!将原理融会贯通到顶点的SpringBoot实战项目
- 空枝|1368元 6GB+128GB+5000毫安电池四摄拍照手机
- 小熊科技|SpringCloud在K8s上的最佳实践—高可用 混沌工程
- 小暖男石头哥|微服务架构中将SpringBoot项目打包Docker镜像