C3P0连接池只需要一个jar包:

其中我们可以看到有三个jar包;

属于C3P0的jar包只有一个,另外两个是测试时使用的JDBC驱动:一个是mysql的,一个是oracle的;

可以看到在src下我们有一个xml文件,在C3P0中我们可以通过xml配置参数,同样也可以像DBCP中使用properties文件,但是properties文件中只能写一个数据库连接,xml配置就更为灵活了,可以写多个连接(可选的)后面有案例。

普通连接:

package c3p0;

import java.sql.Connection;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
* 使用C3P0连接池
* @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) throws Exception {
// 1) 创建连接池对象
ComboPooledDataSource cds = new ComboPooledDataSource(); // 2) 设置连接参数
cds.setJdbcUrl(url);
cds.setUser(user);
cds.setPassword(password);
cds.setDriverClass(driverClass); // 3) 设置连接池相关的参数
cds.setInitialPoolSize(5); // 初始化连接数
cds.setMaxPoolSize(10); // 最大连接数
cds.setCheckoutTimeout(3000); // 最大等待时间
cds.setMinPoolSize(3); // 设置最小连接数
/*
* 最小连接数适用的场景;
* 在高峰期之后,连接池中的连接数从初始化的5个
* 变成了最大连接数的10个;
* 但是当低峰期到来的时候,根本使用不到那么多连接;
* 这个时候就需要最小连接数来控制最少的连接数了。
*/
// 4) 获取连接
for(int i=1; i<=11; i++) {
Connection conn = cds.getConnection();
System.out.println(conn); // 代理的connection
// 红色的是C3P0软件的日志信息! // 关闭第3个
if(i == 3) {
conn.close(); // 因为这些连接池
}
}
}
}

使用加载配置文件(c3p0-config.xml:名字是固定的,不可更改)

c3p0-config.xml:中的内容

<c3p0-config>
<!-- 默认配置 -->
<default-config>
<!-- 连接参数 -->
<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
<property name="user">root</property>
<property name="password">123456</property>
<property name="driverClass">com.mysql.jdbc.Driver</property> <!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">12</property>
<property name="checkoutTimeout">5000</property>
<property name="minPoolSize">3</property> </default-config> <!-- 命名配置 -->
<named-config name="oracle">
<!-- 连接参数 -->
<property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:xe</property>
<property name="user">mzy</property>
<property name="password">123456</property>
<property name="driverClass">oracle.jdbc.driver.OracleDriver</property> <!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">12</property>
<property name="checkoutTimeout">5000</property>
<property name="minPoolSize">3</property>
</named-config> </c3p0-config>

使用了配置文件之后,使用c3p0连接池,当你设置连接参数的时候,它会自动去配置文件中读取,不需要有额外操作!

使用读取配置文件的方式进行初始化连接池:

package c3p0;

import java.sql.Connection;
import java.sql.SQLException; import com.mchange.v2.c3p0.ComboPooledDataSource; /**
* 同样适用配置文件的方式;
* 不用硬编码
*
* 这里也可以使用properties的形式;但是properties不如xml灵活!
* 比如如果我们要有多个数据库可选(不同的数据库产品)
* 使用properties的话,我们必须一个数据库一个properties;
* 不够灵活,所以在C3P0中我们建议使用xml的方式!
*
* @author mzy
*
*/
public class Demo02 {
/**
* 使用xml配置文件,需要注意:
* 1) 需要把一个名为c3p0-config.xml文件放到src目录下,c3p0会自动读取。
* <c3p0的读取机制:
* 1.在普通java项目下,是在bin目录下找
* 2.在web项目下,是在WEB-INF/classes/下找
* 但是因为在普通java项目下,bin目录是原封不动的拷贝src中的(除.java文件编译成.class文件)
* 在web项目下,所有src中的文件也同上拷贝进WEB-INF/classes中
* 所以我们只用把 c3p0-config.xml直接拷贝到src下就可以了!
* >
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
/**
* 1) new ComboPooledDataSource():
* 使用这种没有参数的构造方法,读取的是default-config的配置信息。
*
* 2) new ComboPooledDataSource("name"):
* 使用有参的构造方法,读取的是name-config配置信息。
*/
// 1) 创建连接池对象
// ComboPooledDataSource cds = new ComboPooledDataSource();
ComboPooledDataSource cds = new ComboPooledDataSource("oracle"); //2) 获取连接
for(int i=1;i<=13;i++){
Connection conn = cds.getConnection();
System.out.println(conn); //关闭第3个
if(i==3){
conn.close();//本质是把连接对象放回连接池中
}
} }
}

初始C3P0连接池的更多相关文章

  1. C3P0连接池详解及配置

    C3P0连接池详解及配置 本人使用的C3P0的jar包是:c3p0-0.9.1.jar <bean id = "dataSource" class = "com.m ...

  2. C3P0连接池详细配置

    C3P0连接池详细配置 转自http://msq.javaeye.com/blog/60387 <c3p0-config> <default-config> <!--当连 ...

  3. Hibernate的配置中,c3p0连接池相关配置

    一.配置c3p0 1.导入 hibernate-c3po连接池包,Maven地址是:http://mvnrepository.com/artifact/org.hibernate/hibernate- ...

  4. C3P0连接池使用教程

     转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6405861.html  在项目中的应用见: https://github.com/ygj0930/Coupl ...

  5. Hibernate配置C3P0连接池

    引入C3PO包 在hibernate.cfg.xml文件中配置 <!-- 数据库连接池的使用 --> <!-- 选择使用C3P0连接池 --> <property nam ...

  6. C3P0连接池一些基本配置

    C3P0连接池配置 数据库连接是一个耗费大量资源且相当慢的操作,所以为了提高性能和连接速度,诞生了连接池这样的概念. 在多用户并发操作过程中,连接池尤为重要. 它是将那些已连接的数据库连接存放在一个容 ...

  7. Java开发笔记(一百五十)C3P0连接池的用法

    JDBC既制定统一标准兼容了多种数据库,又利用预报告堵上了SQL注入漏洞,照理说已经很完善了,可是人算不如天算,它在性能方面不尽如人意.问题出在数据库连接的管理上,按照正常流程,每次操作完数据库,都要 ...

  8. c3p0连接池]

    <c3p0-config> <!-- 默认配置 --> <default-config> <property name="jdbcUrl" ...

  9. c3p0连接池获得的Connection执行close方法后是否真的销毁Connection对象?

    问题描述: jfinal做的api系统中,在正常调用接口一段时间后,突然再调用接口的时候,该请求无响应api系统后台也无错误信息 (就是刚开始接口调用是正常的,突然就无响应了) 于是啊,就开始找错误. ...

随机推荐

  1. sublime安装emmet

    1,先安装package install 2,然后安装emmet,安装完后会自动load加载Pyv8,如果加载不成功只能手动下载(详情可以百度).

  2. linux下nginx访问ftp目录权限问题

    在将nginx目录设置为ftp目录访问时会报错:403 forbidden 原因在于nginx访问时账户问题,通过修改nginx.conf中的访问名解决 打开nginx.conf 修改user值,去掉 ...

  3. 微信小程序云开发-数据库-查询满足条件的数据

    一.查询价格大于10的商品 1.wxml文件 2.js文件 where条件语句:.where({price:db.command.gt(10)}) 3.查询结果 二.查询价格大于等于10的商品 js文 ...

  4. Linux服务系统申请SSL证书方法

    inux主要面向专业性较强的技术人员,如果是WEB站点通常采取PHP语言为主选,可选的服务器环境中有Apache.Nginx.Tomcat这几类为主的框架环境,有的图方便会用一些可视化一键式的控制面板 ...

  5. jenkins资源下载地址(软件、插件等)

    jenkins资源下载地址(软件.插件等) 1. 镜像1:清华镜像 2 .镜像2:http://mirrors.jenkins-ci.org/ 3. 官方下载地址:https://jenkins.io ...

  6. django中路由配置的正则

    在django中配置路由遇到正则的坑: django2.x版本中使用re_path来进行正则表达式的匹配 用法如下: from Django.urls import re.path(导入re_path ...

  7. Magento 2.2 SQL注入漏洞

    影响版本 2.2.* poc地址  https://github.com/ambionics/magento-exploits python3 magento-sqli.py http://192.1 ...

  8. Django GIS SQL注入漏洞(CVE-2020-9402)

    影响版本 Django 1.11.29之前的1.11.x版本.2.2.11之前的2.2.x版本和3.0.4之前的3.0.x版本中存在SQL注入漏洞 提示有admin.vuln.vuln2,3个页面,存 ...

  9. Mac使用Charles抓取ios手机APP中的https请求

    1.配置Http代理 Port为监听端口号,默认为8888,勾选Enable transparent HTTP proxying,接着勾选SOCKS proxy,可以监听Socks请求 2.安装Cha ...

  10. 预训练语言模型的前世今生 - 从Word Embedding到BERT

    预训练语言模型的前世今生 - 从Word Embedding到BERT 本篇文章共 24619 个词,一个字一个字手码的不容易,转载请标明出处:预训练语言模型的前世今生 - 从Word Embeddi ...