事务管理自定义事务管理器
事务管理自定义事务管理器
public class DBUtils {//获取链接//在当前线程中存储所使用的链接private ThreadLocal<Connection> threadLocal = new ThreadLocal<>();//注入数据源private DataSource dataSource;public void setDataSource(DataSource dataSource) {this.dataSource = dataSource;}//获得链接public Connection getCurrentConnection() throws SQLException {Connection connection = threadLocal.get();if (connection == null){connection = dataSource.getConnection();threadLocal.set(connection);}return connection;}//释放连接public void close(){threadLocal.remove();}}
//事务管理类
public class TransactionManager {@Autowired//对于静态属性的注入 必须借用set方法 而且setter不能是静态方法private DBUtils dbUtils;public void setDbUtils(DBUtils dbUtils) {this.dbUtils = dbUtils;}//开启事务@Before(value = "pt()")public void beginTransaction(){System.out.println("开启事务");try {Connection connection = dbUtils.getCurrentConnection();System.out.println(connection);dbUtils.getCurrentConnection().setAutoCommit(false);System.out.println(connection.getAutoCommit());} catch (SQLException e) {e.printStackTrace();}}//提交事务public void commitTransaction(){System.out.println("提交事务");try {Connection connection = dbUtils.getCurrentConnection();System.out.println(connection);System.out.println(connection.getAutoCommit());dbUtils.getCurrentConnection().commit();} catch (SQLException e) {e.printStackTrace();}}//回滚事务public void rollbackTransaction(){System.out.println("回滚事务");try {dbUtils.getCurrentConnection().rollback();} catch (SQLException e) {e.printStackTrace();}}//释放连接public void release(){System.out.println("关闭连接");try {dbUtils.getCurrentConnection().close();dbUtils.close();} catch (SQLException e) {e.printStackTrace();}}public void around(ProceedingJoinPoint proceedingJoinPoint){Object[] args = proceedingJoinPoint.getArgs();Object result = null;try {beginTransaction();//调用需要增强的方法result = proceedingJoinPoint.proceed(args);commitTransaction();} catch (Throwable throwable) {rollbackTransaction();throwable.printStackTrace();}finally {release();}}
}
事务管理自定义事务管理器相关推荐
- 自定义事务管理器TransactionManager对象
自定义事务管理器TransactionManager对象 以aop思想,实现事务管理切面 1. DataSource注册容器 <?xml version="1.0" enco ...
- .NET简谈自定义事务资源管理器
在上一篇文章"NET简谈事务.分布式事务处理"中我大概总结了关于.NET中的事务处理方式和结合了WCF框架的简单应用.在事务性操作中我们的重点是能将数据进行可逆化,说白了就是能保证 ...
- java元婴期(21)----java进阶(spring(5)---事务管理AOP事务管理(全自动)spring整合Junit)
事务管理 事务:一组业务操作ABCD,要么全部成功,要么全部不成功. 特性:ACID 原子性:整体 一致性:完成 隔离性:并发 持久性:结果 隔离问题: 脏读:一个事务读到另一个事务没有提交的数据 不 ...
- easyswoole事务mysql_easyswoole ORM 事务操作管理
事务操作 DbManager 链接管理器提供 DbManager操作事务 传参说明(代码示例看下文) 参数类型 参数说明 string或array 值为connectionName,代表当前协程下连接 ...
- MyBatisPlus 开启事务并交由 Springboot 管理
MyBatisPlus 开启事务并交由 Springboot 管理 前言 一.什么是事务 二.开启方法 总结 前言 网络上对于事务的解释都太过官方,太过晦涩,导致我们都看不懂,我来用人话解释一下什么是 ...
- Spring事务和Aspects框架管理事务,看这篇就够了!(简单易懂!)
Spring事务和Aspects框架管理事务的用法 一.事务的介绍 1.1什么是事务 1.2事务的四大特性 二.事务的隔离级别以及导致的问题介绍 2.1隔离级别介绍 2.2导致的问题介绍 2.2.1脏 ...
- 事务管理(事务控制方式)
事务控制方式 编程式 声明式(XML) 声明式(注解) 案例介绍 银行转账业务说明 银行转账操作中,涉及到从A账户到B账户的资金转移操作.数据层仅提供单条数据的基础操作,未涉及多账户间的业务操作. 新 ...
- 楼梯在SQL Server事务日志管理,三级:事务日志,备份和恢复(16周翻译)
楼梯在SQL Server事务日志管理,三级:事务日志,备份和恢复 通过托尼•戴维斯,2011/09/07 该系列 本文是楼梯系列的一部分:楼梯在SQL Server事务日志管理 当一切都很顺利,没有 ...
- Spring Cloud笔记(8)使用Seata管理分布式事务
分布式事务介绍 所谓事务,就是一系列业务操作构成的独立的执行单元.比如用户购买商品下单的行为,需要执行创建订单,扣减商品库存的两个不同的数据库操作,这就是一个事务.事务最重要的特性就是要支持原子性,要 ...
最新文章
- Java面试之Java基础下册(含答案)
- django博客项目8:文章详情页
- 新学语言python和JS
- 字符串相加/大数相加(代码极短)
- 网易云携手美云智数掀起企业移动信息化发展新浪潮
- Spark Streaming(四)kafka搭建(单节点,单broker)
- vue复选框CheckBox清空选中的值
- Scratch3 二次开发系列
- ModelArts黑科技揭秘|模型智能评估、诊断,让模型来个“体检
- 07-R语言jiebaR包的分词学习
- 今日恐慌与贪婪指数为66 贪婪程度有所缓解
- Python中的用for,while循环遍历文件实例
- 【渝粤教育】国家开放大学2018年春季 3922T汽车运用基础 参考试题
- java 服务器时间 jvm_手动设置jvm时间改为第8时区的时间JVM虚拟机时区设置问题,java日期工具类各种解决不好使,很麻烦...
- 算法导论第八章练习参考答案
- 图像特征的特点及其常用的特征提取与匹配方法
- 千年3步法外挂 千年3脚本 千年3外挂 千年3最新外挂
- hi3519模组测试
- 计算机快速看图教程,CAD快速看图使用电脑版软件操作教程
- php蘑菇街商城源码,php源码:dedecms精仿蘑菇街(mogujie.com)源码,时尚购物社区源码...