java_JDBC连接池C3P0的使用
1、数据库连接池基本介绍
1.预先再缓冲池中放入一定数量的连接,当需要建立连接时,只需要从“缓冲池”中取出一个,使用完毕后放回。
2.数据库连接池负责分配、管理和释放数据库连接,它允许多个程序重复的使用现有的数据库连接,而不是重新建立一个。
3.当应用程序向连接池请求的数量超过最大连接数量时,这些请求将被加入到等待队列。
2、连接池的种类
1.C3P0数据库连接池,速度相对较慢,稳定性不错(hubernate,spring)。
2.DBCP数据库连接池,速度相对C3P0较快,但不是很稳定。
3.Druid(德鲁伊)是阿里提供的数据库的连接池,集DBCP,C3P0,Proxool有点于一身的数据库连接池。
等等…
3、C3P0数据库连接池实现
1.首相要将jar包引入到项目中
2.设置配置文件如下:在src目录下创建文件名 c3p0-config.xml 文件
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <c3p0-config> <!--使用默认的配置读取数据库连接池对象 --> < default -config> <!-- 连接参数 --> <property name= "driverClass" >com.mysql.cj.jdbc.Driver</property> <property name= "jdbcUrl" >jdbc:mysql: //localhost:3306/MovieDB</property> <property name= "user" >root</property> <property name= "password" >SASA</property> <!-- 连接池参数 --> <!--初始化申请的连接数量--> <property name= "initialPoolSize" > 5 </property> <!--最大的连接数量--> <property name= "maxPoolSize" > 10 </property> <!--超时时间--> <property name= "checkoutTimeout" > 3000 </property> </ default -config> </c3p0-config> |
3.测试:
方法一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import com.mchange.v2.c3p0.ComboPooledDataSource; import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.SQLException; public class Demo1 { public static void main(String[] args) throws Exception { method01(); } // 方法一:手动设置连接参数 public static void method01() throws PropertyVetoException, PropertyVetoException, SQLException { ComboPooledDataSource cpds = new ComboPooledDataSource(); // 为连接池设置驱动 cpds.setDriverClass( "com.mysql.cj.jdbc.Driver" ); // 设置连接池连接数据库的参数 cpds.setJdbcUrl( "jdbc:mysql://localhost:3306/MovieDB" ); cpds.setUser( "root" ); cpds.setPassword( "SASA" ); // 设置初始化的连接数量 cpds.setInitialPoolSize( 5 ); // 设置最大连接数量 cpds.setMaxPoolSize( 10 ); // 测试连接速度 long start = System.currentTimeMillis(); for ( int i = 0 ; i < 50000 ; i++) { Connection connection = cpds.getConnection(); connection.close(); } long end = System.currentTimeMillis(); System.out.println( "C3P0 所用时间:" + (end-start)); } } |
方法二:
配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 | <named-config name= "otherc3p0" > <!-- 连接参数 --> <property name= "driverClass" >com.mysql.cj.jdbc.Driver</property> <property name= "jdbcUrl" >jdbc:mysql: //localhost:3306/MovieDB?serverTimezone=Asia/Shanghai</property> <property name= "user" >root</property> <property name= "password" >SASA</property> <!-- 连接池参数 --> <property name= "initialPoolSize" > 5 </property> <property name= "maxPoolSize" > 8 </property> <property name= "checkoutTimeout" > 1000 </property> </named-config> |
测试:
1 2 3 4 5 6 7 8 9 10 11 12 | // 方法二:使用配置文件创建连接池 public static void method02() throws Exception{ // 这里填写的参数,必须要和配置文件中 <name-config name ="zcc_mysql"></name-config> 一致 ComboPooledDataSource cpds = new ComboPooledDataSource( "otherc3p0" ); long start = System.currentTimeMillis(); for ( int i = 0 ; i < 500000 ; i++) { Connection connection = cpds.getConnection(); connection.close(); } long end = System.currentTimeMillis(); System.out.println( "C3P0 所用时间:" + (end-start)); // 1580 } |
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!