Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >C3P0连接池的配置与使用[通俗易懂]

C3P0连接池的配置与使用[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-09-05 08:43:03
发布于 2022-09-05 08:43:03
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

1、下载c3p0-0.9.1.2.jar

下载地址:http://download.csdn.net/detail/chunxiaqiudong5/9661922

2、添加配置文件c3p0-config.xml

3、配置文件内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>  
    <!-- This is default config! -->  
    <default-config>  
        <property name="initialPoolSize">10</property>  
        <property name="maxIdleTime">30</property>  
        <property name="maxPoolSize">100</property>  
        <property name="minPoolSize">10</property>  
        <property name="maxStatements">200</property>  
    </default-config>  
  
    <!-- This is my config for mysql-->  
    <named-config name="mysql">  
        <property name="driverClass">com.mysql.jdbc.Driver</property>  
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF8</property>  
        <property name="user">root</property>  
        <property name="password"></property>  
         <!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3-->
        <property name="initialPoolSize">10</property>
        <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 -->  
        <property name="maxIdleTime">30</property>  
        <!--连接池中保留的最大连接数。默认值: 15 -->
        <property name="maxPoolSize">100</property> 
        <!-- 连接池中保留的最小连接数,默认为:3--> 
        <property name="minPoolSize">10</property> 
        <!--c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0--> 
        <property name="maxStatements">200</property>  
        <!-- 当连接池连接耗尽时,客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。默认: 0 -->   
        <property name="checkoutTimeout" value="3000"/> 
        <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 -->   
        <property name="acquireIncrement" value="2"/> 
        <!--定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次-->   
        <property name="acquireRetryAttempts" value="0"/>  
        <!--重新尝试的时间间隔,默认为:1000毫秒-->   
        <property name="acquireRetryDelay" value="1000" /> 
        <!--关闭连接时,是否提交未提交的事务,默认为false,即关闭连接,回滚未提交的事务 -->   
        <property name="autoCommitOnClose">false</property>  
        <!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试使用。默认值: null -->   
        <property name="automaticTestTable">Test</property> 
         <!--如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认: false-->   
        <property name="breakAfterAcquireFailure">false</property>
        <!--60秒检查所有连接池中的空闲连接。默认值: 0,不检查 -->   
        <property name="idleConnectionTestPeriod">60</property>    
        <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。默认值: 0 -->   
        <property name="maxStatementsPerConnection"></property> 
    </named-config>  
      
      
    <!-- This is my config for oracle -->  
    <named-config name="oracle">  
        <property name="driverClass">oracle.jdbc.driver.OracleDriver</property>  
        <property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:orcl</property>  
        <property name="user">scott</property>  
        <property name="password">liang</property>  
        <property name="initialPoolSize">10</property>  
        <property name="maxIdleTime">30</property>  
        <property name="maxPoolSize">100</property>  
        <property name="minPoolSize">10</property>  
        <property name="maxStatements">200</property>  
    </named-config>  
</c3p0-config>

4、连接池连接类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.xxx.utils;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class JDBCUtil {

	private static DataSource dataSource=null;
	static{
		dataSource=new ComboPooledDataSource("mysql");
	}
	
	/**
	 * 获取数据库连接
	 * @return
	 */
	public static Connection getConnection(){
		Connection conn=null;
		try {
			 conn=dataSource.getConnection();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}

	
	/**
	 * 关闭数据库连接
	 * @param conn
	 */
	public static void closeConn(Connection conn){
		try {
			if(conn!=null && conn.isClosed()){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

5、测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.xxx.test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Test;

import com.xxx.utils.JDBCUtil;

public class TestJdbc {

	@Test
	public void test() {
		Connection conn=JDBCUtil.getConnection();
		System.out.println(conn);
		try {
			PreparedStatement stmt=conn.prepareStatement("select * from tb_user");
			ResultSet re=stmt.executeQuery();
			while(re.next()){
				String name=re.getString(2);
				System.out.println(name);
				
			}
			
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	

}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137772.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
c3p0数据库连接池配置总结[通俗易懂]
关于c3p0一般有这么两种配置,一种是通过set方法进行配置,另一种是通过在同src目录下的c3p0-conflg.xml文件或者c3p0.properties文件进行相关的配置。
全栈程序员站长
2022/08/10
2.4K0
c3p0的常用配置方式
文件名字为:c3p0.properties(放在src目录下面) //程序我写的比较简单,可以用来测试执行配置。
用户5166556
2019/04/16
1K0
Maven下C3P0连接池配置及使用
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/17
1.2K0
Maven下C3P0连接池配置及使用
MySQL---数据库从入门走向大神系列(十四)-ComboPooledDataSource(C3P0连接池配置)
MySQL的jar包mysql-connector-java-5.1.39-bin目前是5.1.39版本: http://dev.mysql.com/downloads/connector/j/
谙忆
2021/01/21
7640
C3P0数据库连接池连接Mysql8.0.11的配置问题
小白一个,这几天,在学C3P0数据连接池,把遇到的一些问题记录一下,希望能帮到你们。
全栈程序员站长
2022/08/19
1.4K0
C3P0数据库连接池连接Mysql8.0.11的配置问题
JavaWeb后端入门2—连接池
是装有连接的容器,使用连接的时候可以从连接池中进行获取,使用完成后将连接归还给连接池
用户6948990
2025/04/03
880
JavaWeb后端入门2—连接池
谈谈数据库连接池
最近又在为暑假的实习奔波...今天的面试被问到连接池有没有使用过,一时竟然哑口(简历上写的可以熟悉mysql啊~)。回来反思总结了一下,然后又看了20分钟网上视频。为防止下次面试又出糗,于是便有了这篇随笔~
云海谷天
2022/08/09
4000
谈谈数据库连接池
c3p0连接池配置模板,SSM中使用c3p0连接池配置属性
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/131947.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/30
8590
C3P0数据库连接池
javax.sql.DataSource表示数据库连接池,DataSource本身只是Sun公司提供的一个接口,没有具体的实现,它的实现由连接池的数据库厂商去实现。我们只需要学习这个工具如何使用即可。
ma布
2024/10/21
1490
C3P0数据库连接池
C3P0连接池配置参数讲解
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132597.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/28
8260
hibernate之c3p0连接池配置详解
数据库连接池,项目中一旦配置好后一般很少改动,所以很多人并没有细细的研究过(有时甚至是运维的人负责配置),其实这个知识点还是很重要的,所以我在这里总结分享下,需要用到的时候拿出来看看就可以啦。这里我们介绍的是c3p0的配置方式。
全栈程序员站长
2022/07/01
7690
jdbc基础 (五) 连接池与数据源 DBCP以及C3P0的使用
一、连接池的概念和使用 在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法。 数据库连接池的主要操作如下: (1)建立数据库连接池对象。 (2)按照事先指定的参数创建初始数量的数据库连接(即:空闲
欠扁的小篮子
2018/04/11
9570
数据库连接池C3P0,DBCP教程详解示例
连接池 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采用连接池技术,来共享连接Connection。这样我们就不需要每次都创建连接、释放连接了,这些操作都交给了连接池 1.1 连接池概述 l 概念 用池来管理Connection,这样可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会
Java学习
2018/04/17
3.3K0
数据库连接池C3P0,DBCP教程详解示例
C3P0 连接池相关概念
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ajianyingxiaoqinghan/article/details/88931960
剑影啸清寒
2019/05/26
6570
JDBC 数据库连接池:DBCP、C3P0(14)
1)JDBC的数据库连接池使用javax.sql.DataSource来表示,DataSource只是一个接口,该接口通常由服务器提供实现,也有一些开源组织提供实现:DBCP数据库连接池、C3P0数据库连接池
桑鱼
2020/03/17
7280
hibernate链接数据库链接池c3p0配置
<bean id="dataSourceLocal" name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 指定连接数据库的驱动--> <property name="driverClass" value="${jdbc.driverClassName}"/> <!-- 指定连接数据库的URL--> <property name="jdbcUrl" value="${jdbc.url}"/
xiangzhihong
2018/02/01
7630
Hibernate整合C3P0实现连接池
Hibernate中可以使用默认的连接池,无论功能与性能都不如C3PO(网友反映,我没有测试过),C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
张果
2022/05/09
7710
Hibernate整合C3P0实现连接池
[数据库连接池二]Java数据库连接池--C3P0和JDNI.
前言: 上一篇文章中讲了DBCP的用法以及实现原理, 这一篇再来说下C3P0和JDNI的用法.  1.1、C3P0数据源   C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。C3P0数据源在项目开发中使用得比较多。   c3p0与dbcp区别 dbcp没有自动回收空闲连接的功能 c3p0有自动回收空闲连接功能 1.2、在应用程序中加入C3P0连接池   1.导入相关jar包        
一枝花算不算浪漫
2018/05/18
1.1K0
数据库连接池和JDBCTemplate介绍
1.倒入jar包(两个)   c3p0-0.9.1.2.jar machange-commons-java-0.2.15.jar (不要忘记导入数据库驱动jar包)
用户9979303
2022/10/28
4980
开源数据库连接池的使用
上篇博客刚刚说完如何去自定义一个数据库连接池,当然,这个自定义的数据库连接池是十分简易的,凭借自己的能力也无法写出优秀的连接池。但是,不用担心,我们可以使用开源的数据库连接池,开源的优势体现于此。
wangweijun
2020/01/19
1.4K0
相关推荐
c3p0数据库连接池配置总结[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验