论坛首页 入门技术论坛

使用数据库连接池connection.close()不是真正关闭的疑问

浏览 14738 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-22  
很多时候都是自问自答,呵呵


"spring或者hibernate或者其他什么的,在回收某个线程的Con时,同时会把ThreadLocal里与它对应的con变为空"

是这样的么?  能查到源码么? 因为最近也在接触这个~

0 请登录后投票
   发表时间:2009-04-22  
这个问题就交给楼上吧,呵呵。我比较懒。
0 请登录后投票
   发表时间:2009-04-22  
殊不知 我比你更懒!
0 请登录后投票
   发表时间:2009-04-23  
那我们交给其他网友,看看如何
0 请登录后投票
   发表时间:2009-04-24  
看看对象池模式你们就了解了。
什么时候回收对象(连接,或者线程或者其他什么东西)是取决于策略的。
就好比Java的垃圾回收,如果你实现不好,可能会出现很多问题。

我想如果是我实现,我肯定会用个守护线程来观察各个对象的状态。
如果对象被关闭了,或者超时了,那么守护线程就回收这个对象。所以很多
池都有个超时设置的。如果你的程序可能长时间使用一个对象,那么这个时间就最好设置长点。
第二个问题connection.close重写后只是设置某个连接的状态,而不是真正的去关闭这个连接。你要做的只是使用它。而管理它的任务就交给这个pool来吧。
0 请登录后投票
   发表时间:2009-06-26  
一个conn肯定只能同时被一个事务使用。
所谓的 共用一个conn 其实是:可被多个多个事务或者请求使用 但是不是同时。

还有,如果一个事务a 现在使用链接conna  ,在使用 conna.close() 显示的放回链接池  或者长时间不使用自动的被连接池 回收后, 当事务a 再次需要链接的时候调用的不一定再是conna 。 可以说是 连接池维持的等待链接的conn里面随机取得。
0 请登录后投票
   发表时间:2009-06-26  
嗯,这个主题可以结贴了.
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics