先介绍一下情况: 第一次搞了个存储过程产生了个临时表,然后在关联临时表取数据,测试的时候发现请求后会话是没有关闭的,临时表一直存在,且刷新页面后会产生其他会话(因临时表没有清空数据,每次请求都会往表里加数据,结果多次刷新,显示的数据上下变动)
自我理解:
数据库连接池的存在,使得请求后产生一个连接一个会话 A,创建临时表(返回结果正常),连接保持
第一次刷新后,再次请求,连接保持,且同一会话 A,临时表数据累加(返回结果*2,错误)
第二次刷新后,再次请求,连接保持,创建另外一个会话 B,再次创建临时表(返回结果正常)
第三次刷新…………结果返回要么正常,要么是反复累加的结果
求教:
1、同一页面的多次刷新请求对数据库而已是否为同一用户,是否会创建不同会话
2、会话什么时候关闭,当一个 sql 结束,返回相应的结果后,会话会保留多久关闭
3、如果一个 service 方法不加事务注解,调用多个 sql 语句,且每条 sql 语句之间有一定的时间间隔,是否会产生多个会话执行 sql,甚至是多个连接执行 sql