线程关闭--还回池中
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