正文之前
在之前的文章讲到了传统的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的更多相关文章
-
dbcp/c3p0连接池设置mysql会话变量
我们有几个计算风控值的定时任务,几乎每隔5秒会更新所有账户的当前总资产并以此通知风控,每隔一小时就产生一两个G的binlog,几十台服务器折腾..数据库是公用的,代码是通过工具自动生成的,直接修改流程 ...
-
网络协议 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 ...
-
Java测试开发--MySql之C3P0连接池(八)
连接池C3P0! 连接池技术的目的:解决建立数据库连接耗费资源和时间很多的问题,提高性能 ! 下面以案例演示下C3P0的操作流程. 1.测试准备: ①MySql数据库一枚②database名为myte ...
-
c3p0连接池]
<c3p0-config> <!-- 默认配置 --> <default-config> <property name="jdbcUrl" ...
-
c3p0连接池获得的Connection执行close方法后是否真的销毁Connection对象?
问题描述: jfinal做的api系统中,在正常调用接口一段时间后,突然再调用接口的时候,该请求无响应api系统后台也无错误信息 (就是刚开始接口调用是正常的,突然就无响应了) 于是啊,就开始找错误. ...
-
C3P0连接池问题,APPARENT DEADLOCK!!! Creating emergency..... [问题点数:20分,结帖人lovekong]
采用c3p0连接池,每次调试程序,第一次访问时(Tomcat服务器重启后再访问)都会出现以下错误,然后连接库需要很长时间,最终是可以连上的,之后再访问就没问题了,请高手们会诊一下,希望能帮小弟解决此问 ...
-
HQL查询及Hibernate对c3p0连接池的支持
//HQL查询 // auto-import要设置true,如果是false,写HQL时要指定类的全名 //查询全部列 Query query = session.createQuery(" ...
-
使用c3p0连接池
首先我们需要知道为什么要使用连接池:因为jdbc没有保持连接的能力,一旦超过一定时间没有使用(大约几百毫秒),连接就会被自动释放掉,每次新建连接都需要140毫秒左右的时间而C3P0连接池会池化连接,随 ...
-
Maven 工程下 Spring MVC 站点配置 (三) C3P0连接池与@Autowired的应用
Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 前两篇文章主要是对站点和数据库操作配置进行了演示,如果单 ...
随机推荐
-
ASP.NET MVC 从零开始 - 自动化部署(其二)
这篇文章是从我的 github 博客 http://lxconan.github.io 导入的. 这是这个系列的第五篇了,前四篇请参见: ASP.NET MVC 从零开始 – Create and R ...
-
初识JNI
需要用到NDK Android 平台从诞生起,就已经支持 C.C++开发.众所周知,Android 的 SDK 基于 Java 实现,这意味着基于 Android SDK 进行开发的第三方应用都必须使 ...
-
linux中C语言获取高精度时钟gettimeofday函数
前言: 在开发中,很多时候需要知道各个函数或者是某些设备对命令的操作用时,因此需要用到 gettimeofday 来获取当前时钟. 一,函数说明 #include int gettimeofd ...
-
kobo boot scripts
#!/bin/sh pkill nickel eink_enable_autoupdate rm -rf /debian/tmp/* /debian/tmp/.* 2>/dev/null mou ...
-
Python3.5入门学习记录-模块
模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用. 简单地说,模块就是一个保存了 ...
-
非确定有限状态自动机的构建(一)——NFA的定义和实现
保留版权,转载需注明出处(http://blog.csdn.net/panjunbiao). 非确定有限状态自动机(Nondeterministic Finite Automata,NFA)由以下元素 ...
-
爬虫框架之Scrapy(二)
递归解析 糗事百科递归解析 在前面的例子里只是爬取了糗事百科热门的第一个页面,但是当我们需要爬取更多的页面时,需要对每个页面的url依次发起请求,然后通过解析的方法进行作者和标题的解析. 我们可以构建 ...
-
js压缩图片上传插件localResizeIMG
示例 /** * 本地图片压缩后上传 */ $("#vfile").change(function(){ var _this = $(this); lrz(this.files[0 ...
-
JS设计模式(13)状态模式
什么是状态模式? 定义:将事物内部的每个状态分别封装成类,内部状态改变会产生不同行为. 主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为. 何时使用:代码中包含大 ...
-
AC日记——「SDOI2017」序列计数 LibreOJ 2002
「SDOI2017」序列计数 思路: 矩阵快速幂: 代码: #include <bits/stdc++.h> using namespace std; #define mod 201704 ...