初识apache DBCP连接池
连接案例:
首先:我们使用的是mysql数据库,所以要有一个mysql和java的JDBCjar包;
然后是DBCP中的两个jar包,DBCP使用的话,需要两个包:
dbcp.jar和pool.jar。
普通连接:
package dbcp;
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbcp.BasicDataSource;
/**
* dbcp的使用有两个包:
* dbcp核心包 和 pool包
* @author mzy
*
*/
public class Demo01 {
private static String url="jdbc:mysql://localhost:3306/test";
private static String user="root";
private static String password="123456";
private static String driverClass="com.mysql.jdbc.Driver";
public static void main(String[] args) {
// 1) 创建dbcp连接池对象
BasicDataSource bds = new BasicDataSource();
// 2) 设置连接参数
bds.setUrl(url);
bds.setUsername(user);
bds.setPassword(password);
bds.setDriverClassName(driverClass);
// 3) 设置连接池参数
bds.setInitialSize(5); // 初始化连接
bds.setMaxActive(10); // 最大连接数
// 如果不调整的话,会一直等待
bds.setMaxWait(3000); // 当超过最大连接时,最大等待时间为3秒
try {
// 从连接池中获取连接
for(int i=0; i<11; i++) {
Connection conn = bds.getConnection();
System.out.println(conn); // 这里得到的Connection是一个代理对象
if(i==3) {
conn.close(); // 这些close其实是把连接放回连接池中
// 注意之前我们讲的代理模式:动态代理
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
通过jdbc.properties中的配置文件进行连接(并设定初始化参数,注意和上面作对比):
jdbc.properties
url=jdbc:mysql://localhost:3306/test
username=root
password=123456
driverClassName=com.mysql.jdbc.Driver
initialSize=5
maxActive=12
maxWait=5000
package dbcp;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
/**
* 通过读properties配置文件进行读写
*
* 读取jdbc.properties文件内容
* dbcp可以自动识别每个配置信息,但是约定前提:
* 配置文件文件的key名称和设置方法的名称保持一致!!!(反射)
* 即javaBean约束:
* 例如setAge --> age 等等
*/
public class Demo02 {
public static void main(String[] args) {
try {
// 获取连接
Properties prop = new Properties();
// 使用类路径读取配置文件
InputStream in = Demo02.class.getResourceAsStream("/jdbc.properties");
// 加载配置文件
prop.load(in);
// 1) 使用工厂类来创建dbcp连接池对象(读取配置文件方式)
BasicDataSource bds = (BasicDataSource)BasicDataSourceFactory.createDataSource(prop);
//从连接池中获取连接
for(int i=1;i<=13;i++){
Connection conn = bds.getConnection(); //注意: 这里返回的Connection对象,不是原来的Connection,而是代理后的Connection对象
System.out.println(conn);
//注意: 使用连接池,记住释放连接
/* if(i==3){
conn.close();// 把连接对象放回连接池中的。连接池中最大能够保存最大连接数的连接对象
}*/
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
初识apache DBCP连接池的更多相关文章
- JDBC实例--工具类升级,使用Apache DBCP连接池重构DBUtility,让连接数据库更有效,更安全
直接使用JDBC访问数据库时,需要避免以下隐患: 1. 每一次数据操作请求都需要建立数据库连接.打开连接.存取数据和关闭连接等步骤.而建立和打开数据库连接是一件既耗资源又费时的过程,如果频繁发生这种数 ...
- DBCP连接池简介
DBCP连接池简介 1.数据库连接基础 数据库连接池基础主要包括以下三个方面的内容:数据库连接池的基本概念.数据库连接池的工作原理.Java开源的连接池.下面将从这三个方面一一介绍: (1)数据库连接 ...
- DBCP连接池介绍
DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...
- DBCP连接池原理分析及配置用法
DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...
- JNDI和在tomcat中配置DBCP连接池 元数据的使用 DBUtils框架的使用 多表操作
1 JNDI和在tomcat中配置DBCP连接池 JNDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于J2SE中的javax.namin ...
- 【转】DBCP连接池原理分析
---------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 JDBC 3. DB ...
- DBCP连接池的使用
1.新建工程 2.导入commons-dbcp commons-logging commons-pool这三个包 3.创建dbcpconfig.properties的文件 实例如下 #连接设置 dri ...
- 使用c3p0与DBCP连接池,造成的MySql 8小时问题解决方案
转自:http://blog.csdn.net/wangfayinn/article/details/24623575 c3p0数据库连接池mysql8小时 目录(?)[-] 基本问题解决 项目环境 ...
- 常见的DBCP连接池配置
项目中使用mybatis出现一个问题,项目刚启动时,查询项目列表是ok的,过上一段时间之后,再次查询项目列表,查询失败,初步判断是因为mysql的连接问题,最后查阅资料,发现是连接池中的连接失效,导致 ...
随机推荐
- js检测客户端是否安装
前言 需求背景:一个web下载页面,需要检测pc是否安装了客户端软件(windows软件).网页上有一个打开客户端按钮.若安装了客户端软件,则直接打开,否则下载软件.支持web下载页面在iframe下 ...
- P4494 [HAOI2018]反色游戏
P4494 [HAOI2018]反色游戏 题意 给你一个无向图,图上每个点是黑色或者白色.你可以将一条边的两个端点颜色取反.问你有多少种方法每个边至多取反一次使得图上全变成白色的点. 思路 若任意一个 ...
- innodb引擎相关参数
1.innodb_flush_log_at_trx_commit (双一标准之一) 作用:主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0.1.2 ...
- linux服务器环境部署(三、docker部署nginx)
一.下载nginx镜像 官网地址:https://hub.docker.com/_/nginx #下载镜像 默认为最新版本 docker pull nginx#下载指定版本 docker pull n ...
- Treestar Flowjo 10.6.2 for win64安装破解教程
Treestar FlowJo v10.6.2是一款极其优秀好用的流式细胞数据分析工具,通过图像分析细胞的各种变化,利用软件自带的分析功能,结合细胞模型创建合理的数据分析平台.本教程提供其安装包.注册 ...
- Adobe ColdFusion 文件读取漏洞(CVE-2010-2861)
影响范围 Adobe ColdFusion 8.9版本中存在一处目录穿越漏洞 poc http://192.168.49.2:8500/CFIDE/administrator/enter.cfm?lo ...
- ; 按快捷键`(即波浪号~所在的键盘按键)立即打开随身U盘中的办公专用文件夹
; 按快捷键`(即波浪号~所在的键盘按键)立即打开随身U盘中的办公专用文件夹; WorkFolderHotkey.ahk;; http://www.autoahk.com/; https://www. ...
- 创建型-单例模式 SingletonPattern
单例模式 Singleton 保证一个类只有一个实例的实现方法 给其他类提供一个全局的访问点. 由自己创建自己的唯一实例 实现 实现方法分为饿汉式(线程安全).懒汉式(线程不安全).懒汉式(lock+ ...
- vue的table切换
HTML: <div id="box"> <ul> <li v-for="(item,index) in items" v-tex ...
- 迈入 8K 时代,AI 驱动超高清 “视” 界到来
2021 年,超高清迈入 "8K" 时代.超高清视频将带来全新视听体验,但超高清生产在内容生产层面也面临着超高清存量少.生产设备更新换代慢.制作周期成倍增加的困境.在 7 月 10 ...