DBCP和C3P0实现连接池技术

本文是基于Windows 10系统环境,学习和使用连接池技术:

  • Windows 10
  • MyEclipse 10
  • DCBP
  • C3P0

一、连接池技术的基本概念

(1) 连接池出现的背景

  • 涉及频繁的数据库连接的打开、关闭,影响程序的运行效率

(2) 连接池的定义

  • 连接池是创建和管理一个连接的缓冲池的技术

(3) 实现连接池技术的相关组件

  • DBCP:Apache 软件基金组织下的开源连接池实现
  • C3P0:Spring、hiternate默认支持C3P0连接池技术

二、DBCP的使用

(1) 引入jar包文件

  • commons-dbcp-1.4.jar
  • commons-pool-1.5.6.jar

(2) 硬编码方式实现

  • java代码
package com.inspur.c_dbcp;import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.junit.Test;
/*** ClassName: Demo_DBCP* Function: TODO ADD FUNCTION* @author: xuzheng* date: 2019-5-7 上午8:22:49*/
public class Demo_DBCP {/** 硬编码方式实现连接池*/@Testpublic void testDbcp() throws Exception{//DBCP连接池核心类BasicDataSource dataSource = new BasicDataSource();//连接池参数配置:初始化连接数、最大连接数、连接url、驱动、用户、密码dataSource.setUrl("jdbc:mysql://172.30.12.59:3306/day15");//数据库连接URLdataSource.setDriverClassName("com.mysql.jdbc.Driver");//数据库驱动dataSource.setUsername("root");//数据库用户名dataSource.setPassword("123456");//数据库密码dataSource.setInitialSize(3);//初始化连接数dataSource.setMaxActive(6);//最大连接数dataSource.setMaxIdle(3000);//最大空闲时间//获取连接Connection conn = dataSource.getConnection();conn.prepareStatement("delete from user where id=19").executeUpdate();conn.close();}
}

(3) 配置方式实现

  • 配置文件
// dbcp.properties
url=jdbc:mysql://172.30.12.59:3306/day15
username=root
password=123456
driverClassName=com.mysql.jdbc.Driver
initialSize=3
maxActive=6
maxIdle=3000
  • java代码
package com.inspur.c_dbcp;import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.junit.Test;
/*** ClassName: Demo_DBCP* Function: TODO ADD FUNCTION* @author: xuzheng* date: 2019-5-7 上午8:22:49*/
public class Demo_DBCP {/** 配置方式实现连接池*/@Testpublic void testDbcp2() throws Exception{//加载prop配置文件Properties properties = new Properties();//获取文件流FileInputStream inStream = new FileInputStream("./src/dbcp.properties");//加载属性配置文件properties.load(inStream);//根据prop配置,直接创建数据源对象DataSource dataSource = BasicDataSourceFactory.createDataSource(properties);//获取连接Connection conn = dataSource.getConnection();conn.prepareStatement("delete from user where id=17").executeUpdate();conn.close();}
}

二、C3P0的使用

(1) 引入jar包文件

  • c3p0-0.9.1.2.jar

(2) 硬编码方式实现

  • java代码
package com.inspur.d_c3p0;import java.sql.Connection;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/*** ClassName: Demo_c3p0* Function: TODO ADD FUNCTION* @author: xuzheng* date: 2019-5-7 上午10:52:30*/
public class Demo_c3p0 {/** 硬编码方式配置*/@Testpublic void testC3P0() throws Exception{//创建连接池核心工具类ComboPooledDataSource dataSource = new ComboPooledDataSource();//连接池参数配置:初始化连接数、最大连接数、连接url、驱动、用户、密码dataSource.setJdbcUrl("jdbc:mysql://172.30.12.59:3306/day15");dataSource.setDriverClass("com.mysql.jdbc.Driver");dataSource.setUser("root");dataSource.setPassword("123456");dataSource.setInitialPoolSize(3);dataSource.setMaxPoolSize(6);dataSource.setMaxIdleTime(3000);//从连接池对象中,获取连接对象Connection conn = dataSource.getConnection();//执行更新conn.prepareStatement("delete from user where id=15").executeUpdate();//关闭连接conn.close();}
}

(3) 配置方式实现

  • 配置文件 c3p0-config.xml 放在src目录下
<c3p0-config><default-config><property name="jdbcUrl">jdbc:mysql://172.30.12.59:3306/day15</property><property name="driverClass">com.mysql.jdbc.Driver</property><property name="user">root</property><property name="password">123456</property><property name="maxIdleTime">3000</property><property name="maxPoolSize">6</property><property name="initialPoolSize">3</property></default-config><named-config name="mysql_config"><property name="jdvcUrl">jdbc:mysql://172.30.12.59:3306/day15</property><property name="driverClass">com.mysql.jdbc.Driver</property><property name="user">root</property><property name="password">123456</property><property name="maxIdleTime">3000</property><property name="maxPoolSize">6</property><property name="initialPoolSize">3</property><user-overrides user="poop"><property name="maxStatements">300</property></user-overrides></named-config>
</c3p0-config>
  • java代码
package com.inspur.d_c3p0;import java.sql.Connection;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
/*** ClassName: Demo_c3p0* Function: TODO ADD FUNCTION* @author: xuzheng* date: 2019-5-7 上午10:52:30*/
public class Demo_c3p0 {/** 配置方式配置*/@Testpublic void testC3P0() throws Exception{//创建连接池核心工具类ComboPooledDataSource dataSource = new ComboPooledDataSource();//ComboPooledDataSource dataSource = new ComboPooledDataSource("mysql_config");//从连接池对象中,获取连接对象Connection conn = dataSource.getConnection();//执行更新conn.prepareStatement("delete from user where id=14").executeUpdate();//关闭连接conn.close();}
}

DBCP和C3P0实现连接池技术相关推荐

  1. c3p0、dbcp、druid三大连接池对比

    转: c3p0.dbcp.druid三大连接池对比 转载于:https://www.cnblogs.com/littlelazy/p/10480552.html

  2. c3p0连接池技术和Druid连接池技术比较

    开发中经常遇到使用c3p0技术和Druid技术建立的工具类JDBCUtils, 下面将对这两种技术进行简单的介绍. java程序与数据库数据交互的步骤 1. 首先需要与数据库建立连接, 即完成驱动注册 ...

  3. 走进JavaWeb技术世界3:JDBC的进化与连接池技术

    网络访问 随着 Oracle, Sybase, SQL Server ,DB2,  Mysql 等人陆陆续续住进数据库村, 这里呈现出一片兴旺发达的景象, 无数的程序在村里忙忙碌碌, 读写数据库,   ...

  4. 数据库连接池——C3P0:数据库连接池技术

    数据库连接池 1. 概念:其实就是一个容器(集合),存放数据库连接的容器. 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接 ...

  5. c3p0 mysql 连接池配置文件_数据库连接池c3p0的使用

    原标题:数据库连接池c3p0的使用 来源:java联盟 https://mp.weixin.qq.com/s/5Tbkf8dVFfH8AvtqWl-7Xg 程序员共读整理发布,转载请联系作者获得授权 ...

  6. JDBC实例--JDBC连接池技术解密,连接池对我们不再陌生

    一.为什么我们要用连接池技术? 前面的数据库连接的建立及关闭资源的方法有些缺陷.统舱传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开.关闭该物理连接, 系统性能严重受损. 解 ...

  7. java 连接池技术_java数据库连接池技术原理(浅析)

    在执行数据库SQL语句时,我们先要进行数据连接:而每次创建新的数据库的连接要消耗大量的资源,这样,大家就想出了数据库连接池技术.它的原理是,在运行过程中,同时打开着一定数量的数据库连接,形成数据连接池 ...

  8. Druid 德鲁伊连接池技术

    Druid 德鲁伊连接池技术 步骤: 去官网去下载一个德鲁伊的jar -> druid-1.0.9.jar 定义配置文件:使用properties文件类型的,名字随便起 手动加载配置文件信息: ...

  9. Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用

    前面做了一个非常垃圾的小demo,真的无法直面它,菜的抠脚啊,真的菜,好好努力把.菜鸡. --WZY 一.JDBC是什么? Java Data Base Connectivity,java数据库连接, ...

最新文章

  1. IE7的web标准之道——7:(修正)float双倍margin bug
  2. 24.指针和引用的区别
  3. C语言选择排序(解析)
  4. 知道c语言单元测试答案西安工程大学免费,C语言程序设计(西安工程大学)知到章节测试题答案...
  5. 具有Java 8支持的Spring Framework 4.0.3和Spring Data Redis 1.2.1
  6. 深入理解ArrayList
  7. mysql忘记命令后半部分_MySQL常用命令
  8. Matlab排序函数
  9. css3多变形,CSS3 clip-path polygon图形构建与动画变换二三事
  10. Windows使用ROS机器人操作系统12记录
  11. emule连接服务器无响应,为什么我的emule连接不上服务器了
  12. 手机用html电视,手机怎么连接电视
  13. C++~STL容器实例——三国武将阵营管理系统
  14. Linux 加密与解密应用
  15. 带隙基准及LDO电路
  16. H5游戏开发包括哪些游戏类型
  17. 数据集收集-包含《COVID-19》,《英国在线零售业务》,《电商行业用户行为分析数据集》,《电商婴儿用户》,《亚马逊手机》等17个数据集,用于数据分析挖掘,kaggle比赛练习
  18. MySQL 格式化日期(DATE_FORMAT)
  19. 8255芯片实现7段LED显示器
  20. Libev源码分析05:Libev中的绝对时间定时器

热门文章

  1. c++读取obj文件的数据 其中f中只取面片定点数据
  2. Python爬虫+selenium——爬取淘宝商品信息和数据分析
  3. 查看终端设备接入交换机的端口方法
  4. 浏览器中打开特定网址
  5. 2019联想小新pro13.3 Intel i7 10710U+MX250 liinux双系统安装及美化修改(ubuntu19.10 / ubuntu18.04.4 / ubuntu20.04)
  6. or1k启动文件分析
  7. 小甲鱼28课文件:因为懂你,总结反思
  8. 大数据环境下的多维分析技术
  9. Git Extensions 使用
  10. BUUCTF_Crypto题目:rot