//代码中肯定会有这么一段:
finally
{
try
{
if(rs != null){
rs.close();
rs = null;
}
if (ps != null)
{
ps.close();
ps = null;
}
if (conn != null)
{
conn.close();
conn = null;
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}疑问:
1,既然是用连接池,那么为什么会有 close 这样一说.close字面意义就是关闭.如果要向连接池管理对象归还这个连接至少也应该使用free或者end这样的单词.
2,使用close方法 意义很混乱, 这个操作背后究竟发生了什么呢,究竟是在什么情况下做了什么操作呢?
1) 在获得的连接属于连接池内的连接的时候 这个close是关闭还是仅仅归还让池内数量归位?
2) 在获得的连接属于非连接池内连接, 这个时候close 是关闭还是如何呢
3) 由于close是个接口方法,里面层次我跟进去又太深,实在是找不到真正去实现他的那个类,里面源代码究竟写了写什么?
3,DriverManager.getConnection 之后究竟发生了什么, 什么情况下会获取连接池;什么情况下获取的是单独的连接
题外话
由于我们知道,数据库技术的连接方案也只不过是tcp方案的包装. 直白点说他就是个socket.
所以 肯定是存在 长连接的 (也就是连接之后非硬件性错误的话 他是永不断开的)那么,我同时也知道,socket server 除了拥有3000个左右连接毫无压力之外 还能做其他大把大把庞大而繁杂的业务逻辑运算.
那么,为什么数据库这东西对连接访问如此吃紧,以至于大家对连接池的控制在区区50个连接左右.对其操作还分外的畏手畏脚. 这难道不是莫大的讽刺吗?给个确切的理由吧, 还是.
JDBC数据库连接池的实现及原理
http://hi.baidu.com/sleinet/blog/item/d7329b165a3b7c55f3de328b.html