Apache-DBCP数据库连接池的使用

1.什么是数据库连接池
Apache-DBCP连接池组件下载地址

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

2.为什么需要数据库连接池?

当对数据库的访问过大时,如果没有数据库连接池,那么频繁的对数据库进行连接、关闭连接等操作对数据库的压力是非常大的;如果使用了数据库连接池则同时访问数据库的连接就会被很好的控制,从而提高性能。

2.关键配置

为了发挥数据库连接池的作用,在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。

最小连接数setMinIdle():
是数据库一直保持的数据库连接数,所以如果应用程序对数据库连接的使用量不大,将有大量的数据库资源被浪费。

初始化连接数setInitialSize():
连接池启动时创建的初始化数据库连接数量。

最大连接数setMaxIdle():
是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求被加入到等待队列中。如果设置为非正数则表示不限制。

最大等待时间setMaxWaitMillis():
当没有可用连接时,连接池等待连接被归还的最大时间,超过时间则抛出异常,可设置参数为0或者负数使得无限等待(根据不同连接池配置)。

//可以创建这样一个工具类
public class ConnectionManager {

    private static String DRIVER = "com.mysql.jdbc.Driver";
    private static String URL = "jdbc:mysql:///t_message";     //"jdbc:mysql:///t_message"
    private static String USERNAME = "root";
    private static String PASSWORD = "rootroot";
    private static BasicDataSource datasource = new BasicDataSource();
    
    static {    
        datasource.setDriverClassName(DRIVER);
        datasource.setUrl(URL);
        datasource.setUsername(USERNAME);
        datasource.setPassword(PASSWORD);
        
        datasource.setInitialSize(5);
        datasource.setMaxIdle(20);
        datasource.setMinIdle(5);
        datasource.setMaxWaitMillis(3000);
    }
    /**
     * 获取数据库连接池
     * @return
     */
    public static DataSource getDataSource(){
        return datasource;
    }
    
    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName(DRIVER);
            conn = datasource.getConnection();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            throw new DataAccessException("数据库连接异常");
        }
        return conn;
    }

}

参考:常用数据库连接池 (DBCP、c3p0、Druid) 配置说明

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最原始的数据库连接就是我们打开一个连接,使用过后再关闭该链接来释放资源。频繁的新建打开再关闭连接对jvm和数据库都...
    野柳阅读 11,509评论 1 11
  • 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互...
    凯哥学堂阅读 4,683评论 0 0
  • DriverManager的实现方式一般是在主程序中建立数据库的连接,然后进行数据库的操作,操作完毕后断开数据库连...
    怪蜀黍Zzzzlw阅读 6,102评论 0 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,463评论 19 139
  • 这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。 一...
    java面试收割机阅读 2,817评论 0 0