jianzh5 2013-04-20 13:08
浏览 456
已采纳

连接池的Connection问题

项目中使用了proxool数据源,配置了静态创建连接类。

 

public class DBConnection {
    public static Connection getConn() throws Exception{
         
        return DriverManager.getConnection("proxool.db_master");
         
    }
     
    public static void closeDB(Connection conn){
        try{
             
            if (conn!=null) conn.close();
             
        }catch (Exception e) {
            // TODO: handle exception
        }
    }}

 那这样使用的时候还需不需要调用Connection.close()方法呢?

try{conn.close();conn=null;}catch(Exception e){}

这个close方法是直接调用了java.sql.Connection.close()方法,这样是不是绕过连接池直接关闭 Conn了呢?

如果需要那么Connection就是我手动关闭的,跟连接池没什么关系?
如果不关闭的话那是什么时候关闭呢?
请达人给我解释一下。               

  • 写回答

3条回答

  • yunzhu666 2013-04-20 13:33
    关注

    数据库连接池,就是一个放数据库连接并统一管理的池(似乎是废话),程序要用连接就跟它要,用完了还给它就行了,不需要使用者去自己关闭,那样违背了数据库连接池的初衷。

    [b]为什么使用数据库连接池?[/b]
    因为数据库连接每次申请一个连接,用完后关闭连接,这两个过程其实都是非常耗费资源的,一个数据库连接其实是可以不断重复利用的。怎么重复利用呢?那就由数据库连接池来解决。数据库连接池可以启动时就初始化一些连接,程序要用时到池里来拿,拿完还回池里,给后面的程序用,这样就实现了重复利用节省时间和性能损耗。同时数据库连接池会有最大连接数,防止数据库连接耗尽导致数据库不可用的严重问题。

    当然,数据库连接池的实现中还有各种各样的策略,都是为了满足各种需求。

    详细再看看数据库连接池的原理。

    Java中数据库连接池原理机制的详细讲解
    [url]http://blog.csdn.net/ilibaba/article/details/3996962[/url]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。