DBCP 数据库连接池的实现
DBCP数据源
DBCP 是 Apache 软件基金组织下的开源连接池实现,要使用DBCP数据源,需要应用程序应在系统中增加如下两个 jar 文件:
- Commons-dbcp.jar:连接池的实现
- Commons-pool.jar:连接池实现的依赖库
Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用。
在应用程序中加入dbcp连接池
1.导入 commons-dbcp-1.2.jar、commons-pool-1.6.jar包
2. 在类目录下加入dbcp的配置文件:dbcpconfig.properties
dbcpconfig.properties的配置信息如下:
#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbcstudy
username=root
password=XDP#<!-- 初始化连接 -->
initialSize=10#最大连接数量
maxActive=50#<!-- 最大空闲连接 -->
maxIdle=20#<!-- 最小空闲连接 -->
minIdle=5#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
maxWait=60000#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
connectionProperties=useUnicode=true;characterEncoding=UTF8#指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true#driver default 指定由连接池所创建的连接的只读(read-only)状态。
#如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
defaultReadOnly=#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=READ_UNCOMMITTED
3、在获取数据库连接的工具类(如jdbcUtils)的静态代码块中创建池
package com.company;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.BasicDataSourceFactory;
/**
* @ClassName: JdbcUtils_DBCP
* @Description: 数据库连接工具类
* @author: sunyan
* @date: 2018-10-4 下午6:04:36
*
*/ public class JdbcUtils_DBCP {/*** 在java中,编写数据库连接池需实现java.sql.DataSource接口,每一种数据库连接池都是DataSource接口的实现* DBCP连接池就是java.sql.DataSource接口的一个具体实现*/private static DataSource ds = null;//在静态代码块中创建数据库连接池static{try{//加载dbcpconfig.properties配置文件InputStream in = JdbcUtils_DBCP.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");Properties prop = new Properties();prop.load(in);//创建数据源ds = BasicDataSourceFactory.createDataSource(prop);}catch (Exception e) {throw new ExceptionInInitializerError(e);}}public static Connection getConnection() throws SQLException{//从数据源中获取数据库连接return ds.getConnection();}public static void release(Connection conn,Statement st,ResultSet rs){if(rs!=null){try{//关闭存储查询结果的ResultSet对象rs.close();}catch (Exception e) {e.printStackTrace();}rs = null;}if(st!=null){try{//关闭负责执行SQL命令的Statement对象st.close();}catch (Exception e) {e.printStackTrace();}}if(conn!=null){try{//将Connection连接对象还给数据库连接池conn.close();}catch (Exception e) {e.printStackTrace();}}}
}
3.测试DBCP数据源
package com.company;import java.sql.*;public class dbcpDataSourceTest {public static void main(String[] args) {try {Connection conn=JdbcUtils_DBCP.getConnection();//通过数据库的连接操作数据库,实现增删改查(使用Statement类)String sql=""+"insert into sensor_static(obj_ver,protSize,beginTime,connectStatic,information,endTime) values("+"?,?,?,?,?,?)";PreparedStatement pst=conn.prepareStatement(sql);pst.setLong(1,1);pst.setInt(1,0);pst.setString(2,"protSize");pst.setTimestamp(3, new Timestamp(new java.util.Date().getTime()));pst.setString(4,"connect");pst.setString(5,"information");pst.setTimestamp(6, new Timestamp(new java.util.Date().getTime()));pst.execute();JdbcUtils_DBCP.release(conn,pst,null);} catch (SQLException e) {e.printStackTrace();}}
}
DBCP 数据库连接池的实现相关推荐
- 使用 spring 集成 dbcp 数据库连接池到 Wowza 插件
对于 Wowza 扩展插件,很可能需要连接数据库进行一些持久化查询操作,而且也很有可能把各种业务逻辑 bean 进行集中管理起来.本文结合集成 dbcp 数据库连接池到 Wowza 插件的案例,顺带介 ...
- springboot+dbcp数据库连接池
springboot+dbcp数据库连接池 1,连接池配置文件 2,连接工具类 3,测试类测试连接 4,实际调用连接去同步数据 1,连接池配置文件 在resources目录下添加文件dbcp.prop ...
- C3P0 与 DBCP 数据库连接池使用和比较
博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载.本文由博主 威威喵 原创,请多支持与指教. 本文首发于此 博主:威威喵 | 博客主页:https://blog.csdn.net/ ...
- DBCP数据库连接池技术
1 mysql版本 2 导入jar包版本,采用配置文件连接时,dbcp.properties文件放到src目录下 3 代码 public class DBCPTeset {@Testpublic vo ...
- 03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池
DBCP数据源 使用DBCP数据源,需要导入两个jar包 Commons-dbcp.jar:连接池的实现 Common-pool.jar:连接池实现的依赖库. 导入mysql的jar包. DBC ...
- 在Spring 中配置DBCP数据库连接池
EmployeeDao 代码 import java.util.List; import java.util.Map;import org.springframework.context.Applic ...
- Servlet+MySQL使用DBCP数据库连接池实现用户登录
首先准备数据库数据和登录页面 创建user数据表并且插入几条数据 DROP TABLE IF EXISTS `user`; CREATE TABLE `user` (`id` int(11) NOT ...
- DBCP数据库连接池的使用
2019独角兽企业重金招聘Python工程师标准>>> package tk.dong.connectionPool;import java.io.IOException; impo ...
- Java数据库连接池知识汇总(C3P0+DBCP+Druid)
为什么要使用数据库连接池技术? 数据库连接池技术的优点 1. 资源重用 由于数据库连接得以重用,避免了频繁创建,释放连接引起的大量性能开销.在减少系统消耗的基础上,另一方面也增加了系统运行环境的平稳性 ...
最新文章
- 聊天机器人落地及进阶实战 | 公开课速记
- c语言求一个数组的众数,众数问题 (C语言代码)
- 写 Python 时的 5 个坏习惯
- matlab已知散点图求方程,已知空间离散点,想求出曲面方程,怎么办?
- MFC自定义消息的实现方法
- oc32--构造方法1
- python工作台_FreeCAD二次开发-创建Python工作台,添加菜单栏和工具条,FreeCAD命令
- 魔兽世界客户端数据研究(三)
- Windows远程连接的用户名和密码怎么设置?
- mac通过android打电话,应用短评:用Mac打电话的意义在哪?
- Kotlin入门(15)独门秘笈之特殊类
- 为什么南通的方言会有这么多?
- C++异常层次结构图
- html%3c转译,[转]URL编码
- 宏定义的黑魔法 - 宏菜鸟起飞手册
- 【libmodbus-vs2019】测试使用
- php 根据url获取域名,php 从url中获取域名的实例代码
- 成就你一生的100个哲理71-80
- Android 多进程编程 15问15答!
- 虚拟机服务器CPU授权,vSphere5全新的许可授权方式——CPU许可+vRAM授权
热门文章
- [UE4]epic/UE4关于win7报错缺失api-ms-win-downlevel-kernel32-l2-1-0
- python 任务队列 huey_python huey中文文档(二)
- excel筛选栏显示各项数量,excel筛选怎么看数量
- u盘装机大师win7怎么安装系统教程
- Eclipse通过SVN查看当前文件的提交记录
- wifi大师管理后台源码+微擎框架v2.7.8、2.5.7+wifi大师小程序
- 逃跑吧少年服务器维护时间,逃跑吧少年—《逃跑吧!少年》2月20日PC更新公告...
- [附源码]计算机毕业设计JAVA文章管理系统查重PPT
- 分享一款学生、工程师多功能计算器
- java模拟回合制游戏大小姐_java – 回合制游戏设计:事件驱动与游戏...