数据库连接池技术

        普通的JDBC技术使用DriverManager来获取连接,且每次数据库连接使用完后都必须断开,不然如果程序出现异常而没有关闭连接就会使得内存泄漏,最终会导致重启数据库。这种方法不能控制被创建的连接对象数,如果连接数过多也可能导致内存泄漏,服务器崩溃。

        针对这些存在的漏洞,数据库连接池技术(Connection Pool)被提出。此基本思想是:为数据库连接建立一个”缓冲池“,预先在”缓冲池“中放入一定数量的连接,当需要简历数据库连接时,直接从”缓冲池“中取出一个连接,使用完后放回即可。这个”缓冲池“建立分配、管理、释放连接,允许一个程序重复的使用一个现有的数据库连接,当程序申请的连接数大于该数据库连接池中拥有的连接数,未申请成功的连接就会进入队列等待。

       目前已经有很多种开源的数据库连接池。数据库连接池使用javax.sql.DataSource来表示,DataSource只是一个接口,该接口通常由服务器(Weblogic,WebSphere,Tomcat)提供实现,也有一些开源组织提供:DBCP、C3P0、Proxool、BoneCP、Druid……

  DataSource成为数据源,它包含连接池和连接池管理两个部分,习惯上也把DataSource称为连接池。

  Druid数据源获取连接关闭连接方法类:

public class JDBCUtilsByDruid {
static DataSource dataSource;
static {
//创建一个指定参数的数据库连接池
try {
Properties properties=new Properties();
properties.load(new FileInputStream("src\\druid.properties"));
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
//从数据库连接池中获取可用的连接对象
return dataSource.getConnection();
}
public static void close(ResultSet set, Statement statement, Connection connection) {
try{
if(set!=null){
set.close();
}
if(statement!=null){
statement.close();
}
if(connection!=null){
connection.close();
}
}catch (SQLException e){
throw new RuntimeException(e);
}
}
}

  使用Druid数据源步骤:

    加载druid.properties配置文件:

 

    获取连接:

      Connection connection=JDBCUtilsByDruid.getConnection();
    
    执行操作
    关闭连接
    connection.close();
    

 

    

posted @ 2021-12-23 16:08  ganrui~~~  阅读(105)  评论(0)    收藏  举报