+ -
当前位置:首页 → 问答吧 → 提几个关于JDBC连接池的问题,寻高手指点

提几个关于JDBC连接池的问题,寻高手指点

时间:2011-08-03

来源:互联网

1,一个Connection对象,在一个时刻能不能创建多个Statement(经测试ORACLE貌似可以,其他未知)
   
2,一个Statement对象,在一个时刻是否可以查询出多个ResultSet(经测试ORACLE貌似可以,其他未知)

3,如果一个Connection可以同时执行多个Statement,那干嘛在连接池中创建一堆连接

4,如果说是一个Connection是因为同时执行的Statement数量是有上限的,才在池中创建多个连接,那么上限是多少,又怎么判断一个连接是否是繁忙的

5,一般的连接池实现(DBCP,C3P0)是在什么时候关闭连接的,是在连接出现SQLException时,还是在Statement查询超时的时候,statement有setQueryTimeout(seconds) 方法,那是设置查询超时的时间,还是设置命令执行超时的时间,比方像executeUpdate操作,如何判断是否超时

6,连接池是否应该在应用关闭时释放,close掉全部物理链接

7,在Web服务器正常关闭时,连接池该如何释放

8,在Web服务器异常终止时,连接池该如何释放

9,被Spring管理的 连接池 是否会在 Spring 容器销毁时 , 关闭全部连接

作者: niitlxr   发布时间: 2011-08-03

前几个问题 你可以自己试验 ,连接池是在容器启动的时候根据你在配置文件里配置就行相关连接数目就行初始化的,当你进行数据库操作的时候 ,会从连接池中拿出一个连接,并标记为忙的状态,执行完之后 ,会把这个连接重新放到池中 ,标记为空闲,如果连接不够了 ,会创建新的连接,放到池中 ,不过有个最大连接数是可以设置的,会和你网站的访问量有关。在容器关闭的时候 就会被销毁了。

作者: ajun_studio   发布时间: 2011-08-03

容器关闭的时候,链接是自动销毁?

这是JDBC的规范吗,还是怎么实现的?

经本机测试

Oracle 10g

一个Connection最多可以创建300个Statement对象

作者: niitlxr   发布时间: 2011-08-03

"当你进行数据库操作的时候 ,会从连接池中拿出一个连接,并标记为忙的状态,执行完之后 ,会把这个连接重新放到池中 ,标记为空闲"

我之前也是以为 如果链接正在使用 就标记为繁忙

但是经测试 一个Connection可以创建300个Statement

那么是不是在Connection创建了 300个 Statement 的时候 才标记繁忙呢??

作者: niitlxr   发布时间: 2011-08-03

热门下载

更多