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. 资源重用 由于数据库连接得以重用,避免了频繁创建,释放连接引起的大量性能开销.在减少系统消耗的基础上,另一方面也增加了系统运行环境的平稳性 ...
最新文章
- 年薪25-50w| 虚拟现实创新中心三维重建算法高级研究员招聘
- 分布式WebSocket架构
- 百度地图 osm地图 leaflet echarts webapck的组合使用时的踩坑记录
- 武汉python培训哪一家好一些-武汉Python培训机构哪家好?要怎么选才靠谱?
- C语言求:1到100之间的所有素数之和
- Linux之最常用的20条命令
- input驱动12种事件类型Event types的含义
- Hgame 2022 Answer‘s Windows
- SQL Server 2008将数据导出为脚本 [SQL Server]
- 【算法】输入一个链表,反转链表后,输出新链表的表头。
- 用python os.system 执行 批处理的时候, 出现的一些问题
- mysql workbench中文设置_使用Workbench完成流体压力渗透分析
- clone方法是如何工作的
- 软件测试面试-在工作中功能,接口,性能,自动化的占比是多少?
- Newtonsoft.Json的使用
- python 爬虫 美女_Python3爬取美女妹子图片
- Android对应颜色值代码
- html5游戏视频UI框架,几款流行的HTML5 UI 框架比较
- Tracup|使用项目管理软件帮助战胜拖延症
- LoadLibraryA加载dll失败