Java数据库连接池2——c3p0
来源:互联网 发布:网络市场监管 编辑:程序博客网 时间:2024/05/16 07:08
Java数据库连接池2——c3p0
主要内容
1、用纯Java方式获取连接池
2、从配置文件中拿连接池
3、自己做一个c3p0的Utils,用于包装一个ThreadLocal
附录:所有要用到的工具包的链接
首先导驱动包
用纯Java方式获取连接池
与dbcp不同的除了set,get的某些方法,还有每次拿一个连接都是新创建的。
// 纯JAVA @Test public void demo1() throws Exception { ComboPooledDataSource ds = new ComboPooledDataSource(); ds.setUser("root"); ds.setPassword("1234"); ds.setDriverClass("com.mysql.jdbc.Driver"); ds.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/abc?useUnicode=true&characterEncoding=utf8"); try { Connection con = ds.getConnection(); System.out.println("con:" + con); System.out.println("-----以下演示c3p0属性-------"); System.out.println(ds.getInitialPoolSize());// 初始化大小 System.out.println(ds.getLoginTimeout());// 最大等待时间 System.out.println(ds.getMaxIdleTime());// 最大空闲时间 System.out.println(ds.getMaxPoolSize());//最大同时连接数 15 System.out.println("------以下演示从池中获取链接-------"); for (int i = 0; i < 10; i++) { Connection conn = ds.getConnection(); System.out.println(conn.hashCode()); // 内存地址不同,每次从池中获取到的是新创建的链接 if (i % 2 == 1) { conn.close(); } } } catch (SQLException e) { e.printStackTrace(); } }
从配置文件中拿连接池
这里的配置文件位于src下,是一个XML文件
该xml的代码:
<c3p0-config> <!-- 默认配置,如果没有指定则使用这个配置 --> <default-config> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl"> <!-- 原样,不解析 --> <![CDATA[jdbc:mysql://127.0.0.1:3306/abc?useUnicode=true&characterEncoding=UTF-8]]> </property> <property name="user">root</property> <property name="password">1234</property> <!-- 初始化池大小 --> <property name="initialPoolSize">2</property> <!-- 最大空闲时间 --> <property name="maxIdleTime">30</property> <!-- 最多有多少个连接 --> <property name="maxPoolSize">10</property> <!-- 最少几个连接 --> <property name="minPoolSize">2</property> <!-- 每次最多可以执行多少个批处理语句 --> <property name="maxStatements">50</property> </default-config> <!-- 命名的配置 --> <named-config name="mypool"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/abc</property> <property name="user">root</property> <property name="password">1234</property> <!-- 如果池中数据连接不够时一次增长多少个 --> <property name="acquireIncrement">5</property> <property name="initialPoolSize">100</property> <property name="minPoolSize">50</property> <property name="maxPoolSize">1000</property> <property name="maxStatements">0</property> <property name="maxStatementsPerConnection">5</property> <!-- he's important, but there's only one of him --> </named-config></c3p0-config>
演示从配置文件中拿:
//注意c3p0的位置是位于src下(不可变) @Test //加载配置文件c3p0-config.xml public void demo2() throws Exception { //空参方法指的是:加载默认c3p0-config.xml(配置文件) //ComboPooledDataSource ds = new ComboPooledDataSource(); //参数指定的,配置文件中的配置<named-config name="mypool"> ComboPooledDataSource ds = new ComboPooledDataSource("mypool"); Connection con = ds.getConnection(); System.out.println(con); System.out.println(ds.getMaxPoolSize()); }
自己做一个c3p0的Utils,用于包装一个ThreadLocal
和dbcp大同小异,不过c3p0在某些方面强过于dbcp
public class C3p0Pool { private static DataSource ds;// 单例的池 private static ThreadLocal<Connection> t = new ThreadLocal<Connection>(); static { try { ds =new ComboPooledDataSource(); } catch (Exception e) { throw new RuntimeException("数据库连接池创建失败!"); } } // 以后会用到这个功能 : public static DataSource getDataSource() { return ds; } public static Connection getConnection() { Connection con = t.get(); if (con == null) { try { con = ds.getConnection(); t.set(con); } catch (SQLException e) { e.printStackTrace(); } } return con; } public static void cleanConFromThradeLocal() { t.set(null); }}
附录:所有要用到的工具包的链接
http://pan.baidu.com/s/1hrQBXyO
阅读全文
0 0
- Java数据库连接池2——c3p0
- C3p0——数据库连接池
- java c3p0数据库连接池
- 数据库连接池——dbcp和c3p0
- Java c3p0 oracle 数据库连接池 代码实现
- JAVA开源数据库连接池C3P0简介
- Java使用c3p0建立MySQL数据库连接池
- Java常用的数据库连接池【c3p0】【dbcp】
- java 使用c3p0数据库连接池配置实例
- [数据库连接池二]Java数据库连接池--C3P0和JDNI.
- c3p0——开源数据库连接池(DataSource)
- JDBC学习笔记(8)——数据库连接池(dbcp&C3P0)
- Spring—数据库连接池C3P0、DBCP、Proxool详细配置
- JDBC学习笔记—数据库连接池(DBCP和C3P0)
- 使用c3p0-0.9.2实现数据库连接池
- c3p0 数据库连接池配置
- 数据库连接池C3P0 小结
- 数据库连接池 c3p0
- 排序算法---冒泡排序
- 2017 Multi-University Training Contest
- TensorFlow basic
- 畅通工程
- K-近邻算法(KNN)
- Java数据库连接池2——c3p0
- 如何区分虚拟网卡与物理网卡
- 安卓面试题 Android interview questions
- Hibernate学习笔记 -- day12 使用JPA实现综合案例
- html中<html><body><script>的区别
- 【Mybatis专题】(1)ORM
- 最简单的混合APP开发框架——搭建你的第一个Ionic应用(一)
- linux下文件和文件夹操作
- java发送邮件代码