JDBC-C3P0
一、依赖
pom.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>yofc</groupId>
- <artifactId>jdbc</artifactId>
- <version>1.0-SNAPSHOT</version>
- <dependencies>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>8.0.15</version>
- </dependency>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-api</artifactId>
- <version>5.4.0</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.mchange</groupId>
- <artifactId>c3p0</artifactId>
- <version>0.9.5.3</version>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <!-- 指定jdk -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
二、使用C3P0获取连接(三种方式)
1、实例化和配置 ComboPooledDataSource
- @Test
- public void testC3P0() throws Exception {
- ComboPooledDataSource cpds = new ComboPooledDataSource();
- cpds.setDriverClass("com.mysql.cj.jdbc.Driver");
- cpds.setJdbcUrl("jdbc:mysql://192.168.8.136:3306/jdbc");
- cpds.setUser("root");
- cpds.setPassword("root");
- cpds.setMinPoolSize(5);
- cpds.setAcquireIncrement(5);
- cpds.setMaxPoolSize(20);
- // 打开 PreparedStatement 池
- cpds.setMaxStatements(180);
- cpds.setMaxStatementsPerConnection(10);
- // 获取连接
- System.out.println(cpds.getConnection());
- cpds.close();
- }
2、使用配置文件方式
c3p0 DataSources 可以通过名为 c3p0.properties 的简单 java.util.Properties 文件,通过更高级的 HOCON 配置文件(例如application.conf,application.json)或 XML 格式 c3p0-config.xml 进行配置。
c3p0-config.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <c3p0-config>
- <named-config name="helloc3p0">
- <!-- 指定连接数据源的基本属性 -->
- <property name="user">root</property>
- <property name="password">root</property>
- <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
- <property name="jdbcUrl">jdbc:mysql://192.168.8.136:3306/jdbc</property>
- <!-- 若数据库中连接数不足时, 一次向数据库服务器申请多少个连接 -->
- <property name="acquireIncrement">5</property>
- <!-- 初始化数据库连接池时连接的数量 -->
- <property name="initialPoolSize">5</property>
- <!-- 数据库连接池中的最小的数据库连接数 -->
- <property name="minPoolSize">5</property>
- <!-- 数据库连接池中的最大的数据库连接数 -->
- <property name="maxPoolSize">10</property>
- <!-- C3P0 数据库连接池可以维护的 Statement 的个数 -->
- <property name="maxStatements">20</property>
- <!-- 每个连接同时可以使用的 Statement 对象的个数 -->
- <property name="maxStatementsPerConnection">5</property>
- </named-config>
- <default-config>
- <property name="automaticTestTable">con_test</property>
- <property name="checkoutTimeout">30000</property>
- <property name="idleConnectionTestPeriod">30</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>
- <user-overrides user="test-user">
- <property name="maxPoolSize">10</property>
- <property name="minPoolSize">1</property>
- <property name="maxStatements">0</property>
- </user-overrides>
- </default-config>
- <!-- This app is massive! -->
- <named-config name="intergalactoApp">
- <property name="acquireIncrement">50</property>
- <property name="initialPoolSize">100</property>
- <property name="minPoolSize">50</property>
- <property name="maxPoolSize">1000</property>
- <!-- intergalactoApp adopts a different approach to configuring statement caching -->
- <property name="maxStatements">0</property>
- <property name="maxStatementsPerConnection">5</property>
- <!-- he's important, but there's only one of him -->
- <user-overrides user="master-of-the-universe">
- <property name="acquireIncrement">1</property>
- <property name="initialPoolSize">1</property>
- <property name="minPoolSize">1</property>
- <property name="maxPoolSize">5</property>
- <property name="maxStatementsPerConnection">50</property>
- </user-overrides>
- </named-config>
- </c3p0-config>
- @Test
- public void testC3poWithConfigFile() throws Exception {
- // named-config
- DataSource dataSource = new ComboPooledDataSource("helloc3p0");
- // 获取连接
- System.out.println(dataSource.getConnection());
- ComboPooledDataSource comboPooledDataSource = (ComboPooledDataSource) dataSource;
- // 获取配置
- System.out.println(comboPooledDataSource.getMaxStatements());
- }
3、使用 DataSources 工厂类
- @Test
- public void testC3P0Factory() throws Exception {
- DataSource ds_unpooled = DataSources.unpooledDataSource("jdbc:mysql://192.168.8.136:3306/jdbc", "root", "root");
- Map overrides = new HashMap();
- overrides.put("maxStatements", "200");
- overrides.put("maxPoolSize", new Integer(50));
- DataSource ds_pooled = DataSources.pooledDataSource(ds_unpooled, "intergalactoApp", overrides);
- System.out.println(ds_pooled.getConnection());
- // 两种关闭方式
- DataSources.destroy(ds_pooled);
- if (ds_unpooled instanceof PooledDataSource) {
- PooledDataSource pds = (PooledDataSource) ds_unpooled;
- pds.close();
- } else {
- System.err.println("Not a c3p0 PooledDataSource!");
- }
- }
官方文档
JDBC-C3P0的更多相关文章
- JDBC&&c3p0、事务、批处理、多线程 于一体的经典秘方QueryRunner
目录: 基础篇_功能各自回顾 JDBC基础代码回顾(使用JdbcUtils工具简化) c3p0数据库连接池的使用(使用JdbcUtils工具简化) 大数据的插入(使用c3p0+JdbcUtils工具简 ...
- Spring -- spring 中使用jdbc, c3p0连接池, dao概念
1. 示例代码 CustomerDao.java ,dao接口 public interface CustomerDao { public void insertCustomer(Customer ...
- JSP+Servlet+JDBC+C3P0实现的人力资源管理系统
项目简介 项目来源于:https://github.com/ruou/hr 本系统基于JSP+Servlet+C3P0+Mysql.涉及技术少,易于理解,适合JavaWeb初学者学习使用. 难度等级: ...
- c3p0三种配置方式(automaticTestTable)
c3p0的配置方式分为三种,分别是http://my.oschina.net/lyzg/blog/551331.setters一个个地设置各个配置项2.类路径下提供一个c3p0.properties文 ...
- c3p0配置详解
数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理. 一.实现方式: C3P0有三种方式实现: 1.自己动手写代码,实现数据源 例如: ...
- C3P0连接池配置方式
c3p0的配置方式分为三种,分别是 1.setters一个个地设置各个配置项 2.类路径下提供一个c3p0.properties文件 3.类路径下提供一个c3p0-config.xml文件 1.set ...
- 分页功能的实现——Jdbc && JSP
@目录 什么是分页 ? 两个子模块功能的问题分析 和 解决方案 有条件查和无条件查询的影响 和 解决方案 项目案例: mysql + commons-dbutils+itcast-tools+Base ...
- Java框架spring 学习笔记(十六):c3p0连接池的配置以及dao使用jdbcTemplate
连接池可以大大提高数据库的性能和连接速度,将那些已连接的数据库连接存放在一个连接池里,以后别人要连接数据库的时候,将不会重新建立数据库连接,直接从连接池中取出可用的连接,用户使用完毕后,会释放连接重新 ...
- 【c3p0】 C3P0的三种配置方式以及基本配置项详解
数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理. ---------------------------------------- ...
- JDBC和数据库连接池
JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成. ● JDBC ● C3P0 ● DRUID 一.JDBC ...
随机推荐
- python之旅七【第七篇】面向对象之类成员
面向对象的类成员 相关知识点 一 字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同, 普通字段属于对象 静态字段属于类 class Provinc ...
- EF code first出现错误:列名 Discriminator 无效
转载:https://blog.csdn.net/lanse_my/article/details/38128355 前几天使用code first碰到错误:列名 'Discriminator' 无效 ...
- Asteroids POJ - 3041 匈牙利算法+最小点覆盖König定理
题意: 给出一个N*N的地图N 地图里面有K个障碍 你每次可以选择一条直线 消除这条直线上的所有障碍 (直线只能和列和行平行) 问最少要消除几次 题解: 如果(x,y)上有一个障碍 则把 ...
- 欧拉筛,线性筛,洛谷P2158仪仗队
题目 首先我们先把题目分析一下. emmmm,这应该是一个找规律,应该可以打表,然后我们再分析一下图片,发现如果这个点可以被看到,那它的横坐标和纵坐标应该互质,而互质的条件就是它的横坐标和纵坐标的最大 ...
- Codeforces Global Round 2 D. Frets On Fire (动态开点线段树,沙雕写法)
题目链接:D. Frets On Fire 思路:明明可以离散化+二分写,思路硬是歪到了线段树上,自闭了,真实弟弟,怪不得其他人过得那么快 只和查询的区间长度有关系,排完序如果相邻的两个点的差值小于等 ...
- Codeforces Round #453 (Div. 1) D. Weighting a Tree(构造)
题意 一个 \(n\) 个点 \(m\) 条边的无向连通图中每个点都有一个权值,现在要求给每条边定一个权值,满足每个点的权值等于所有相连的边权之和,权值可负. 题解 如果图是一棵树,那么方案就是唯一的 ...
- 【转】C++命名空间 namespace的作用和使用解析
一. 为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突. 在 C语言中定义了3个层次的作用域,即文件(编译单元).函数和复合语句.C ...
- 【php】php位运算及其高级应用
我们之前学过逻辑与(&&) 条件1 && 条件2 当两边条件同时成立时候返回1 逻辑或(||) 条件1 || 条件2 当两边条件只要有一 ...
- squid详解(正向代理、透明代理、反向代理)
squid http://www.squid-cache.org/ --官方网址 squid软件主要有两大应用:1,代理上网(正向代理,透明代理) 2,网站静态页面缓存加速(反向代理) 三种代理类型: ...
- 源码分析-AutoCloseable
AutoCloseable 该接口用于try-with-resources语法糖提供支持,用于自动关闭资源作用 类型:接口 方法:close(); 详解: close():用于自动关闭资源的时候需要进 ...