spring中事务的分类:spring中事务可以分为编程式事务控制和声明式事务控制 。
编程式事务控制有一点需要注意的:若为编程式事务控制,则开启事务后一定要手动释放(提交或回滚),否则长期占用内存,有可能报事务异常
自己手动控制事务,就叫做编程式事务控制 。
Jdbc代码:
Conn.setAutoCommit(false); // 设置手动控制事务
Hibernate代码:
Session.beginTransaction(); // 开启一个事务
【细粒度的事务控制: 可以对指定的方法、指定的方法的某几行添加事务控制】
(比较灵活,但开发起来比较繁琐: 每次都要开启、提交、回滚.)
声明式事务控制
Spring提供了对事务的管理, 这个就叫声明式事务管理 。
Spring提供了对事务控制的实现 。用户如果想用Spring的声明式事务管理,只需要在配置文件中配置即可; 不想使用时直接移除配置 。这个实现了对事务控制的最大程度的解耦 。
Spring声明式事务管理,核心实现就是基于Aop 。
【粗粒度的事务控制: 只能给整个方法应用事务,不可以对方法的某几行应用事务 。】
(因为aop拦截的是方法 。)
Spring声明式事务管理器类:
Jdbc技术:DataSourceTransactionManager
Hibernate技术:HibernateTransactionManager
spring封装了事务管理的代码(打开,提交,回滚事务)
事务操作对象,因为在不同平台,操作事务的代码各不相同.spring提供了一个接口
————— PlatformTransactionManager 接口
————— 在不同平台,实现不同的接口即可
————— 注意:在spring中玩事务管理.最为核心的对象就是TransactionManager对象
文章插图
spring管理事务的属性介绍
(1)事务的隔离级别
(2)是否只读
(3)事务的传播行为
配置事务的核心管理器,它封装了所有事务,依赖于连接池(DataSourceTransactionManager)
文章插图
xml中配置通知
文章插图
配置将通知织入目标
文章插图
10、spring中aop管理事务 注解使用步骤
文章插图
在需要管理的方法或者类中声明配置事务管理
@Transactional(isolation=Isolation.REPEATABLE_READ,readOnly=false,propagation=Propagation.REQUIRED)
文章插图
【大佬把Spring框架总结的「无比详细」,看完还说不懂别学了】
推荐阅读
- Spring Cloud微服务分布式物联网平台前后端分离源码
- ThinkPHP框架——实现定时任务,定时更新、清理数据
- SpringBoot如何用Session共享实现分布式部署?
- 什么是层次型测试框架?探讨一下分层测试与传统测试方法的差别
- SpringBoot运行源码分析:Spring应用上下文准备
- spring-boot-route 使用aop记录操作日志
- SpringCloud Gateway动态路由之Nacos
- ReconSpider:一款功能强大的高级OSINT框架
- Hadoop框架:NameNode工作机制详解
- 我们为什么选择Vuetify作为前端框架