03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:  DBCP数据源 使用DBCP数据源,需要导入两个jar包 Commons-dbcp.jar:连接池的实现 Common-pool.jar:连接池实现的依赖库。   导入mysql的jar包。   DBCP核心API BasciDataSource   它可以通过实例化对象的方式获得一个对象。 它里面有如下方法: se


DBCP数据源

使用DBCP数据源,需要导入两个jar

Commons-dbcp.jar:连接池的实现

Common-pool.jar:连接池实现的依赖库。

 

导入mysqljar包。

 

DBCP核心API

BasciDataSource   它可以通过实例化对象的方式获得一个对象。

它里面有如下方法:

setDriverClassName(String driverClassName) 设置驱动类的名称。

setInitialSize(int initialSize) 设置初始化时的链接数目。

setMaxActive(int maxIdle) 设置最大的并发访问数量。

setMaxIdle(int maxIdle): 设置最大的闲置数目。

setPassword:用于设置密码。

setUrl:设置url

setUsername:设置用户名。

 

 

数据源实现BasicDataSourceFactory   用于创建数据源的工厂类,

 

不设配置文件时使用BasicDataSource的程序的写法:

package cn.toto.utils;

 

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

import javax.sql.DataSource;

 

import org.apache.commons.dbcp.BasicDataSource;

 

public class JdbcUtils {

    private JdbcUtils(){}

    //定义BasicDataSource的父类接口的形式,获得ds的参数。

    private static DataSource ds;

   

    static {

           //要想使用写好的数据源的功能,得先初始化一个dbcp连接池

           BasicDataSource bds = new BasicDataSource();

          

           //设置一系列参数

           bds.setDriverClassName("com.mysql.jdbc.Driver");

           bds.setUrl("jdbc:mysql://localhost:3306/day14");

           bds.setUsername("root");

           bds.setPassword("123456");

          

           //设置初始化大小

           bds.setInitialSize(5); //初始时设置5个连接数

           bds.setMaxActive(20);//设置并发访问数目。

           //bds.setMaxWait(0);//设置最大等待时间。不等待。

          

           ds = bds;  //获得数据是通过父接口的DataSource接口。

    }

    //获得连接池

    public static DataSource getDataSource(){

       return ds;

    }

 

   

    //获得与指定数据库的连接

    public static Connection getConnection() throws SQLException{

       //从连接池返回一个连接  

       return ds.getConnection();

    }

   

    public static void release(ResultSet rs,Statement stmt,Connection conn){

       if(rs!=null) {

           try{

              rs.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           rs = null;

       }

       if(stmt!=null){

           try{

              stmt.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           stmt = null;

       }

       if(conn!= null) {

           try{

              conn.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           conn = null;

       }

    }

}

 

用于验证的主函数的写法:

package cn.toto.demo;

 

import java.sql.Connection;

import java.sql.SQLException;

 

import cn.toto.utils.JdbcUtils;

 

public class Demo {

 

    public static void main(String[] args) throws SQLException {

      

       for(int i=0;i<30;i++){

           Connection conn = JdbcUtils.getConnection();//如果只写这句,程序将一直等待执行。

           System.out.println(conn);//不写下面一句时,打印输出,验证是否有20条,结果是20

          

           conn.close();//用一个放回一个,加上这一句之后将出现30条数据。

       }

    }

 

}

 

在文档中还有一个方法:

org.apache.commons.dbcp
Class BasicDataSourceFactory
它里面有一个这样的方法:

createDataSource(Properties properties)
          Creates andconfigures a
BasicDataSourceinstance based on the given properties.

它是根据Properties,根据properties中的信息获得信息。

配置dbcp的配置文件的方法是:找到文档中的Configuration,里面有多个属性。

src下面编写一个一个配置文件config.properties

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/day14

username=root

password=123456

initialSize=5

maxiActive=20

 

通过配置文件的方式获得的数据源的源码是:

package cn.toto.utils;

 

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Properties;

 

import javax.sql.DataSource;

 

import org.apache.commons.dbcp.BasicDataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

 

public class JdbcUtils {

    private JdbcUtils() {

    }

 

    // 定义BasicDataSource的父类接口的形式,获得ds的参数。

    private static DataSource ds;

 

    static {

       try {

           InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream(

                  "config.properties");//通过类加载的方式获得获得配置文件的流

           Properties prop = new Properties();

           prop.load(in);//通过流将配置项加载进来。

           //通过工厂类读取

           ds = BasicDataSourceFactory.createDataSource(prop);

       } catch (Exception e) {

           throw new ExceptionInInitializerError();

       }

    }

 

    // 获得连接池

    public static DataSource getDataSource() {

       return ds;

    }

 

    // 获得与指定数据库的连接

    public static Connection getConnection() throws SQLException {

       // 从连接池返回一个连接

       return ds.getConnection();

    }

 

    public static void release(ResultSet rs, Statement stmt, Connection conn) {

       if (rs != null) {

           try {

              rs.close();

           } catch (SQLException e) {

              e.printStackTrace();

           }

           rs = null;

       }

       if (stmt != null) {

           try {

              stmt.close();

           } catch (SQLException e) {

              e.printStackTrace();

           }

           stmt = null;

       }

       if (conn != null) {

           try {

              conn.close();

           } catch (SQLException e) {

              e.printStackTrace();

           }

           conn = null;

       }

    }

}

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
Java Spring
Spring boot 运行服务jar外配置配置文件方式总结
Spring boot 运行服务jar外配置配置文件方式总结
547 0
|
3月前
|
存储 JSON Cloud Native
数据库ADB-PG问题之数据源处理如何解决
数据库ADB-PG问题之数据源处理如何解决
|
2月前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
72 0
|
3月前
|
SQL DataWorks 关系型数据库
DataWorks产品使用合集之数据集成时源头提供数据库自定义函数调用返回数据,数据源端是否可以写自定义SQL实现
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
2月前
|
存储 开发框架 .NET
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
|
3月前
|
数据可视化 安全 API
数据库开放权限风险高,API非唯一选择:DataV为您开启安全高效的数据可视化之旅
良好的用户体验:DataV注重用户体验设计,提供了丰富的交互效果和动画效果,使得数据可视化大屏更加生动、吸引人。这有助于提升用户的参与度和满意度,促进数据的广泛应用
|
4月前
|
缓存 Java 数据库
springboot数据库及缓存常用依赖及配置
springboot数据库及缓存常用依赖及配置
|
4月前
|
SQL druid Java
传统后端SQL数据层替代解决方案: 内置数据源+JdbcTemplate+H2数据库 详解
传统后端SQL数据层替代解决方案: 内置数据源+JdbcTemplate+H2数据库 详解
52 1
|
4月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
43 1
|
3月前
|
Oracle 关系型数据库 Java
实时计算 Flink版产品使用问题之如何启动多个jar包来监听同一个数据库的binlog,并针对不同的业务进行处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。