JDBC连接问题

JDBC连接问题

我不喜欢乱发代码,只挑重点

  1.    xml配置

    <tx:method name="openConn" propagation="REQUIRED"/>

  2. openConn  

    public void openConn()throws Exception{
       System.out.println(employeeDao.findById(2).getEname());
       Thread.sleep(10000);
    }

  3. main函数  主要逻辑   (Ioc容器等等简单代码就不贴了)

    while (true){
       n = sc.nextInt();
       if (n==2){
           break;
       }
        employeeService.openConn();  // openConn在Service里面,会被切点扫描到,xml文件如上只

    会扫描openConn函数,并以Around的方式进行插件,事务方式也如上REQUIRED或者REQUIRS_NEW都试过

    }

  4. 问题:  我这么写代码,无非就是想熟悉整个流程,,当然最重要的是想测试  springJDBC如何控制连接数      因此我增加了延迟10秒的操作

    (1) 每次查询我都延迟10秒,为的是让这个连接在10秒内不会被关闭(结合事务机制Reqired和Req_NEW都试过,结果一样)

    (2) 通过whileTrue 不断创建连接,但结果却让我想不明白,,因为每一次open连接以后,确实是创建了一个事务,并且等待10秒,但为什么 下一个事务必须等  上一个事务处理完以后 才能开始,,结果导致 永远只有一个 连接   (通过logback日志和Navicat可以证实,不能像连接池,或者原生JDBC接口一样创建多个连接并发处理事务)

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,在后面课程SSM开发社交网站中会讲到配置数据库连接池 https://class.imooc.com/lesson/1412#mid=35687,建议同学可以先往后学习。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕阿慧 2020-08-23 16:24:57

同学你好,xml配置中,DriverManagerDataSource类是在每一个连接请求时都新建一个连接,那么在这个对象实例执行的时候,无论执行这个实例中的多少个方法,因为它是单线程执行,所以它是按时序来进行的,不存在创建多个连接处理并发事务。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 py_builder #1
    其实我觉得(9成9)是这样的关系 SpringJDBC自带的 DriverManagerDataSource 可以类比为 JDBC原生的DriverManager 或者Mybatis的 SqlSessionFactory 或者连接池Druid (相同思路不展开了) SpringJDBC自带的 dbcTemplate 可以类比为 JDBC原生的 从DriverManager获取的connection对象 或者 Mybatis从SqlSessionFactory get到的sqlSession对象或者连接池(相同路径不写了) 无论是原生的JDBC connection还是mybatis的sqlSessoin(相当于connction各种功能封装成新接口) 都可以每一次get创建一个新的连接,并且无需按时序来进行,即并行操作(都是单线程) 因此springJDBC太差了,而课程又没有 教导 如何结合 mybatis使用spring(虽然我网上查了下学习好了,但我觉得应该加上!)
    2020-08-23 17:26:15
  • 慕丝1539783 回复 提问者 py_builder #2
    别的不说,课程其实有教怎么整合Mybatis,只是这部分比较靠后,在"SSM开发社交网站"章节,所谓SSM,就是指Spring+SpringMVC+MyBatis。
    2020-08-23 18:08:42
  • 提问者 py_builder 回复 慕丝1539783 #3
    OK,知道了。 而且我后面想想了,其实无法创建多个连接,进行并发事务操作,是因为Ioc xml配置那里 没有将 JdbcTemplate这个对象 设置为 prototype(当然课程里面也没提到,这点需要注意下了)
    2020-08-23 19:46:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师