数据库连接池c3p0学习
这里只记录c3p0的数据源,不会涉及到其它方面和别的数据库连接池的对比
配置文件主要的实现方式有三种:
1.手写代码去加载一个配置文件
创建一个config.properties文件如下:
driverClass= com.mysql.jdbc.Driver
jdbcUrl = jdbc:mysql://127.0.0.1:3306/soc_db?autoReconnect=true&autoReconnectForPools=true
user = root
password = root
......
然后在java代码中:
public void closeInputStream(InputStream inputStream){
if(inputStream!=null){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public InputStream loadResource(String resource) {
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);
if (in == null) {
in = PropertiesUtil.class.getResourceAsStream(resource);
}
return in;
}
public Properties getProperties(String resource){
LOG.debug("[Method] 读取数据库配置信息");
Properties properties = new Properties();
InputStream in = null;
try {
in = loadResource(resource);
if(in!=null){
properties.load(in);
}
} catch (IOException e) {
LOG.error("load properties error",e);
}finally {
closeInputStream(in);
}
LOG.debug(properties.getProperty("url"));
return properties;
}
Properties properties = PropertiesUtil.getInstance().getProperties("/resource/jindun.properties");
c3p0DataSource.setDriverClass(properties.getProperty("driverClass"));
c3p0DataSource.setDriverClass(properties.getProperty("jdbcUrl"));
c3p0DataSource.setDriverClass(properties.getProperty("user"));
c3p0DataSource.setDriverClass(properties.getProperty("password"));
......
2.在src下创建一个c3p0.properties文件(固定名字哦)
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://10.30.79.10:3306/test
c3p0.user=root
c3p0.password=root
......
......
ComboPooledDataSource c3p0DataSource = new ComboPooledDataSource()
......
这样就可以直接使用了,不需要再去说明。
3.在src下创建一个c3p0-config.xml文件
(1)XML格式更加直观
(2)可以在文件中配置多个数据源
<c3p0-config>
<default-config>
<property name="user">root</property>
<property name="password">root</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/test</property> <property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="minPoolSize">10</property>
<property name="maxPoolSize">500</property> <!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property> </default-config> <!-- This app is jindun -->
<named-config name="jinDunApp">
<property name="user">root</property>
<property name="password">root</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://10.30.79.10:3306/HrINetDB?autoReconnect=true&autoReconnectForPools=true</property> <property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="minPoolSize">10</property>
<property name="maxPoolSize">500</property> <!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property> </named-config> <!-- This app is Tianji -->
<named-config name="tianJiApp">
<property name="user">root</property>
<property name="password">root</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://10.30.67.95:3306/config_db?autoReconnect=true&autoReconnectForPools=true</property> <property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="minPoolSize">10</property>
<property name="maxPoolSize">500</property> <!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property> </c3p0-config>
public static void main(String[] args) {
// 默认配置
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
// 固定名字配置
ComboPooledDataSource comboPooledDataSource2 = new ComboPooledDataSource("jinDunApp");
// 数据源使用
PreparedStatement psta;
ResultSet rs;
try {
// 这个的comboPooledDataSource改comboPooledDataSource2就执行jinDunApp配置了
Connection conn = comboPooledDataSource.getConnection();
psta = conn.prepareStatement("SELECT empName FROM t_sc_usermanager");
rs = psta.executeQuery();
while (rs.next() ){
System.out.println(rs.getString(1) + "\n");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
上面就是一个实例。
配置的参数列表如下(具体含义可以查看参考资料):

参考资料:
http://haoran-10.iteye.com/blog/1753332
http://www.mchange.com/projects/c3p0/#c3p0-config.xml
数据库连接池c3p0学习的更多相关文章
- 数据库连接JDBC和数据库连接池C3P0自定义的java封装类
数据库连接JDBC和数据库连接池C3P0自定义的java封装类 使用以下的包装类都需要自己有JDBC的驱动jar包: 如 mysql-connector-java-5.1.26-bin.jar(5.1 ...
- 数据库连接池 c3p0 druid
druid 数据库连接池 c3p0 使用C3P0数据源时需要依赖 mchange-commons-java-0.2.3.4.jar包.缺少该jar包则会报错!
- 数据库连接池——C3P0&Druid(快速入门)
数据库连接池--C3P0&Druid (一) 数据库连接池 每一个事物都有其存在的意义,在初学jdbc的时候,我们建立数据库连接对象后,会对其进行释放,但是数据库连接的建立和关闭是非常消耗资源 ...
- java学习笔记41(数据库连接池 C3p0连接池)
在之前的学习中,我们发现,我们需要频繁的创建连接对象,用完之后还需要在关闭资源,因为这些连接对象都是占资源的,但是又不得不创建,比较繁琐,为了解决这种情况,Java出现了数据库连接池: 数据库连接池的 ...
- [数据库连接池二]Java数据库连接池--C3P0和JDNI.
前言:上一篇文章中讲了DBCP的用法以及实现原理, 这一篇再来说下C3P0和JDNI的用法. 1.1.C3P0数据源 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规 ...
- 数据库连接池 c3p0 demo 代码和分析
import java.sql.Connection; import java.sql.SQLException; import java.beans.PropertyVetoException; i ...
- 数据库连接池c3p0和dbcp
现在常用的开源数据连接池主要有c3p0.dbcp和proxool三种,其中: hibernate开发组推荐使用c3p0; spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样 ...
- 数据库连接池 C3p0
数据库连接池 C3po 1 定义 本质上是个容器(集合) 存放数据库的连接容器(connection 对象) ,当系统初始化以后 容器就会创建 容器中就会申请一些连接对象 ,当用户来访问数据库的时候 ...
- JAVA数据库连接池C3p0 以及阿里Druid提供的连接池
一:连接池的定义 本质上就是个容器(集合) 存放数据库连接的容器,当系统初始化后,容器被创建,容器中就会申请一些连接对象,当用户来访问数据库的时候,从容器中取连接对象,用户用完之后,归还. 二:常用的 ...
随机推荐
- JVM:查看java内存情况命令
jmap (linux下特有,也是很常用的一个命令) 观察运行中的jvm物理内存的占用情况. 参数如下: -heap :打印jvm heap的情况 -histo: 打印jvm heap的直方图.其输出 ...
- Thinkphp文件上传
1.在IndexController.class.php里面写2个方法,shangchuan用来显示页面,upload是上传文件的方法. <?php namespace Home\Control ...
- Struts2之HelloWorld
首先既然是开发Struts程序的话,那么自然需要用到Struts2开发包,Struts2是apache旗下的开源框架,所有的开发包和源代码都可以在Apache官网下载. 那么,就来开始编写第一个Str ...
- 拖动对象ondrag
说明: 在进行拖放操作时,dataTransfer 对象用来保存被拖动的数据.它可以保存一项或多项数据.一种或者多种数据类型.dataTransfer对象有两个主要的方法:getData()方法和se ...
- 10、代码块、构造代码块、静态代码块及main方法之间的关系
1.普通代码块: 在方法或语句中出现在{}之间的类容就称为普通代码块,简称代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”,即顺序执行. /*下面第一个类时合法的 ...
- SQLServer日期函数用法
--1.显示本月第一天 ,) ),)) --2.显示本月最后一天 ,),,))) ,,,)) --3.上个月的最后一天 ,,)) --4.本月的第一个星期一 , ) --5.本年的第一天 ,) --6 ...
- 关于PHP的引用赋值
应用赋值,可以改变之前的变量的值! 可以间接的做到,在变量未申明的时候!就可以获取它的值!
- 3d转换-正方体-Html5Css3-遁地龙卷风
(-1) 写在前面 我用的是chrome49,这个案例是从网上看到的,向这位同行致敬,建议大家在记录自己学习感悟时,向我一样加上笔名,被转载的时候还能留下点东西. 在研究slice-box.js的时候 ...
- json和jsonp
JSON是一种数据交换格式! JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议! 一般使用JSON来传数据,靠JSONP来跨域. JSON的优点: 1.基于纯文本, ...
- I18n问题 国际化
http://www.cnblogs.com/guaniu/archive/2012/01/18/2325556.html java国际化 1.了解缺省Locale是由操作系统决定的,Locale是由 ...