JDBC之DBCP连接池下载,配置,使用

DBCP连接介绍

​ DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp2-2.11.0.jarcommons-logging-1.3.0.jarcommons-pool2-2.12.0.jar,由于建立传统数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。

​ Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用。Tomcat通过JAR包tomcat-dbcp.jar集成了连接池DBCP的功能,通过在context.xml中配置连接池的方式引入DBCP连接池,也可以在server.xml文件中配置全局的连接池。

DBCP jar包下载

需要jar包以及版本,MySql版本一定要与本地电脑的版本一致:
mysql-connector-j-8.0.33.jar
commons-dbcp2-2.11.0.jar
commons-logging-1.3.0.jar

commons-pool2-2.12.0.jar

一、DBCP jar官网下载路径如下:

commons-dbcp2-2.11.0.jar

commons-pool2-2.12.0.jar

commons-logging-1.3.0.jar

JDBC之DBCP连接池下载,配置,使用_第1张图片

JDBC之DBCP连接池下载,配置,使用_第2张图片

JDBC之DBCP连接池下载,配置,使用_第3张图片

二、下载好 DBCP的jar包

JDBC之DBCP连接池下载,配置,使用_第4张图片

三、将下载好的 jar 包导入到idea项目里面去

1、根据个人需要将 commons-logging-1.3.0.jarcommons-pool2-2.12.0.jarcommons-dbcp2-2.11.0.jar jar包文件复制到项目的 lib 路径下。

2、将lib文件夹 “添加为库” 或 将添加的jar包 “添加为库”(必要操作)

JDBC之DBCP连接池下载,配置,使用_第5张图片

DBCP配置及使用(这里以MySql数据库演示)

一、DBCP配置及使用(使用配置文件初始化连接池配置)

1、properties配置文件

我用的是配置 文件名.properties 文件的方式,文件名随意。在项目的 src 目录下新建就行。:

JDBC之DBCP连接池下载,配置,使用_第6张图片

配置文件内容:

#不多解释,这是基本的驱动加载
DriverClassName=com.mysql.cj.jdbc.Driver

#驱动注册
url=jdbc:mysql://localhost:3306/20231124db

#要连接的数据库用户名
username=root

#要连接的数据库密码
password=sasa

#设置是否自动提交,默认为true
defaultAutoCommit=true

#是否为只读 默认为false
defaultReadOnly=false

#初始化数据池拥有的连接数量
initialSize=10

#池中最多可容纳的活着的连接数量,当达到这个数量不在创建连接
maxActive=20

#最大空闲等待,也就是连接等待队列超过这个值会自动回收未使用的连接,直到达到20
maxIdle=20

#最小空闲等待 ,数据池中最少保持的连接
minIdle=5

#最大等待时间,超过这个时间等待队列中的连接就会失效
maxWait=10000

#从池中取出连接时完成校验 ,验证不通过销毁这个connection,默认为true,
testOnBorrow=true

#放入池中时完成校验,默认我fasle
testOnReturn=false

#校验语句,必须是查询语句,至少查询一列,设置了它onBorrow才会生效
validationQuery=select 1

#校验查询时长,如果超过,认为校验失败
validationQueryTimeout=1

#清除一个连接时是否需要校验
testWhileIdle=false

#DBCP默认有个回收器Eviction,这个为设置他的回收时间周期
timeBetweenEvictionRunsMillis=1

#Eviction在运行时一次处理几个连接
numTestsPerEvictionRun=3

#是否缓存PreparedStatements
poolPreparedStatements=true

#缓存PreparedStatements的最大个数
maxOpenPreparedStatements=1

2、连接MySql数据库操作

public static void main(String[] args) {
    try {
        //加载数据库连接池配置
        Properties properties = new Properties();
       	properties.load(Main.class.getClassLoader().getResourceAsStream("database.properties"));
        //创建BasicDataSource数据源
        BasicDataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
        //从数据源获取连接,并且进行sql语句查询
        ResultSet rs = dataSource.getConnection().prepareStatement("SELECT COUNT(0) FROM 20231124DB.depttab").executeQuery();
        //判断是否成功获取到连接
        if (rs.next()) {
            System.out.println("连接成功");
        } else {
            System.out.println("连接失败");
        }
        //释放连接到连接池
        rs.close();
    }catch (Exception e){
        System.out.println(e.getMessage());
    }
}

运行结果:
JDBC之DBCP连接池下载,配置,使用_第7张图片

二、HikariCP 配置及使用(使用代码来初始化连接池配置)

1、连接MySql数据库操作

public static void main(String[] args) throws SQLException {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/20231124db");
        dataSource.setUsername("root");
        dataSource.setPassword("sasa");
        dataSource.setInitialSize(10);
        dataSource.setMaxTotal(20);
        dataSource.setMaxIdle(5);
        dataSource.setMinIdle(2);

        ResultSet rs = dataSource.getConnection().prepareStatement("SELECT COUNT(0) FROM 20231124DB.depttab").executeQuery();
        if (rs.next()) {
            System.out.println("连接成功");
        } else {
            System.out.println("连接失败");
        }
        rs.close();
    }

运行结果:
JDBC之DBCP连接池下载,配置,使用_第8张图片

你可能感兴趣的:(java)