事务-接口与子类动态代理
线程关闭--还回池中
close() 连接关闭,也是还回连接池中 ,仍然绑着连接,但是不能用了 需要解绑 remove()
事务 代表的 提交,sql执行成功 提交成功,说明肯定有事务,默认开启
queryRunner 有带参 无参 --每条一个事务,还是所有在一个事务中?
单表一条语句的crud,不涉及复杂业务 用了带参传入数据源(即连接池) 不考虑多条事务问题
多个dao使用同一个对象 会有问题 配多例
queryRunner对象 每次创建一个新的,并且在数据源中 拿连接
每次sql执行,都用queryRunner.query() queryRunner 多例都是新的
事务 控制 应该在业务层,而不是dao持久层 默认单条事务
事务管理设置
一个业务,几条sql 拿到的是 唯一的 连接 connection
JDK 基于接口动态代理
理解3个参数:
JVM运行时 要用类加载器创建代理对象,
生成相同的方法,class[] 接口保证
方法增强的代码。最后生成代理对象
基于子类-- MethodIntercepter方法拦截
所有业务方法 --- 连接点
被增强(事务)的方法 -- 切入点
动态代理 invoke 具有拦截作用 拦截被代理对象的所有执行方法
aop注解配置 有 顺序调用问题 最终通知 先跑,小心先释放 环绕通知没问题
自己 写的 事务管理器 (主要就是 提交 回滚),自己 配置 < aop:config> <aop:before。。。。
spring 也提供了事务管理器(主要就是 提交 回滚) 声明式事务控制--提倡注解版
哪些方法 需要通知
编程式事务控制 有重复代码 匿名内部类 实现callback
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话