正文之前

在之前的文章讲到了传统的JDBC连接MySQL的方式,但是这样的方式在进行多个连接时,就显得效率低下,明显不如连接池的效率,所以我们这次来讲解一下JDBC连接池之一:c3p0


正文

1. 准备工作

  • IntelliJ IDEA
  • c3p0-0.9.5.2(jar)
  • MySQL

2. 配置 c3p0-config.xml

default-config

在配置之前,需要先进行建立数据库的工作,本文还是采用上篇文章中的名为 customer 的数据库

然后在工程的 src 目录下新建一个名为 c3p0-config 的XML文件(文件名不能自定义)

然后开始配置:

        <!-- 数据库地址 -->
<property name="jdbcUrl">jdbc:mysql://localhost:3306/customer</property>
<!-- 数据库驱动 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!-- 用户名 -->
<property name="user">root</property>
<!-- 密码 -->
<property name="password">3865933</property>

先写基本的数据库信息,然后我们再来写常用的连接池属性,若要查询全部属性,可阅读官网指南,属性也包含于中:

        <!-- 连接池初始化时创建的连接数 -->
<property name="initialPoolSize">1</property>
<!-- 连接池中的最小连接数 -->
<property name="minPoolSize">1</property>
<!-- 连接池中的最小连接数 -->
<property name="maxPoolSize">2</property>
<!-- 无空闲连接可用时,可一次性创建新连接的数量 -->
<property name="acquireIncrement">1</property>
<!-- 获取数据库连接失败后重复尝试的次数 -->
<property name="acquireRetryAttempts">1</property>
<!-- 两次连接的间隔时间,单位为毫秒 -->
<property name = "acquireRetryDelay">1000</property>

给出完整的文件图片:

named-config

可以添加 named-config 来增加数据库配置,内容与default-config一致,我连接了另一个数据库 product :

3. 写个demo

先搞定数据源:

    private static ComboPooledDataSource dataSource1 = new ComboPooledDataSource("test");
private static ComboPooledDataSource dataSource2 = new ComboPooledDataSource();

根据数据源,进行连接

    private static void getConnection(){
try{
Connection connection = dataSource1.getConnection();
System.out.println("连接数据库 product 成功!");
connection.close();
System.out.println("数据库连接已关闭!");
}catch(Exception e){
System.out.println("连接数据库失败!");
}
try{
Connection connection = dataSource2.getConnection();
System.out.println("连接数据库 customer 成功!");
connection.close();
System.out.println("数据库连接已关闭!");
}catch(Exception e){
System.out.println("连接数据库失败!");
}
}
public static void main(String[] args){
getConnection();
}

运行结果:

如果需要有多个连接,使用连接池是不二之选,关于c3p0的讲解到此为止了,谢谢。

【JavaWeb】c3p0连接池与MySQL的更多相关文章

  1. dbcp/c3p0连接池设置mysql会话变量

    我们有几个计算风控值的定时任务,几乎每隔5秒会更新所有账户的当前总资产并以此通知风控,每隔一小时就产生一两个G的binlog,几十台服务器折腾..数据库是公用的,代码是通过工具自动生成的,直接修改流程 ...

  2. 网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别

    1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2 ...

  3. Java测试开发--MySql之C3P0连接池(八)

    连接池C3P0! 连接池技术的目的:解决建立数据库连接耗费资源和时间很多的问题,提高性能 ! 下面以案例演示下C3P0的操作流程. 1.测试准备: ①MySql数据库一枚②database名为myte ...

  4. c3p0连接池]

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

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

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

  6. C3P0连接池问题,APPARENT DEADLOCK!!! Creating emergency..... [问题点数:20分,结帖人lovekong]

    采用c3p0连接池,每次调试程序,第一次访问时(Tomcat服务器重启后再访问)都会出现以下错误,然后连接库需要很长时间,最终是可以连上的,之后再访问就没问题了,请高手们会诊一下,希望能帮小弟解决此问 ...

  7. HQL查询及Hibernate对c3p0连接池的支持

    //HQL查询 // auto-import要设置true,如果是false,写HQL时要指定类的全名 //查询全部列 Query query = session.createQuery(" ...

  8. 使用c3p0连接池

    首先我们需要知道为什么要使用连接池:因为jdbc没有保持连接的能力,一旦超过一定时间没有使用(大约几百毫秒),连接就会被自动释放掉,每次新建连接都需要140毫秒左右的时间而C3P0连接池会池化连接,随 ...

  9. Maven 工程下 Spring MVC 站点配置 (三) C3P0连接池与@Autowired的应用

    Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 前两篇文章主要是对站点和数据库操作配置进行了演示,如果单 ...

随机推荐

  1. HDU 2412 Farm Irrigation

    题目: Benny has a spacious farm land to irrigate. The farm land is a rectangle, and is divided into a ...

  2. 与改写url取文件的方法:NetworkRequest和DataAccessSerivice 文件

    与改写url取文件的方法:NetworkRequest和DataAccessSerivice 文件 CMDNMapDataCache.cpp  读取二进制代码的方法

  3. IOS UI 滚动视图 UIScrollView

    UIScrollView 常用属性 scrollView.maximumZoomScale= 2.0; //  缩放最大比例 scrollView.minimumZoomScale = 0.2;// ...

  4. mybatis_SQL映射(2)

    文章摘录自:http://blog.csdn.net/y172158950/article/details/17258377 1. sql的重用:定义一个sql片段,可在任何SQL语句中重用该片段. ...

  5. Freemarker 入门示例

    初步学习freemarker ,先做一个简单的HelloWord程序! 新建一个WEB工程,下载(我使用的是freemarker-2.3.20)freemarker并导入freemarker.jar, ...

  6. 实现鼠标hover动画效果自己理解的两种方法——练习笔记

    练习前端技术学院的任务,需要实现"导航栏中的链接,随着鼠标悬浮的位置,相应的链接下出现红色线段"的效果(如图1),我的理解有简易与稍显复杂一些的方法: 首先想到的就是直接利用伪元素 ...

  7. 使用Recovery Services备份Azure ARM模式虚拟机

    1.需要事先准备好要备份的虚拟机,如"hlmcent73n" 2.创建一个恢复服务保管库 3.选择虚拟机类型的备份 4.可以选择默认备份策略,也可以选择新建备份策略,以下演示为新建 ...

  8. python_16_序列化

    如何实现不同编程语言进行交互? json数据,相当于语言中间的沟通桥梁 什么是json数据? imoprt json json.dumps(内容)                    --把内容转换 ...

  9. 苹果系统css样式变化

    原因:苹果自带样式覆盖了 参考文章比较详细,就不自己写了,copy了一份~~~ @参考文章 只要在样式里面加一句去掉css去掉iPhone.iPad的默认按钮样式就可以了!~ input[type=& ...

  10. maven依赖问题

    我的一个maven项目A依赖于我的另一个maven项目B,但是maven dependencies中显示的是文件.如下图: 而且项目A部署的时候,部署到tomcat容器的时候也是直接部署的B的编译后的 ...