C3P0&BDCP

C3P0连接池

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。

使用第三方工具要导入jar包,c3p0使用时还需要添加配置文件c3p0-config.xml

配置文件

配置文件名称:c3p0-config.xml (固定)

配置文件路径: src (类路径)

配置文件内容:命名配置

c3p0-config.xml配置文件代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>

  <default-config>
    <property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///school</property>
<property name="user">root</property>
<property name="password">123</property>
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">20</property>
  </default-config>
  
  <named-config name="oracle"> 
    <property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///school</property>
<property name="user">root</property>
<property name="password">123</property>
  </named-config>
  

</c3p0-config>

常见配置项

编写C3P0工具类

package com.pngyul04;

import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Utils {

private static ComboPooledDataSource dataSource
          =new ComboPooledDataSource();

 

public static DataSource getDataSource(){
return dataSource;
}

public static Connection getConnection(){
try {
return dataSource.getConnection();
} catch (SQLException e) {

throw new RuntimeException(e);
}
}

 

}

测试C3P0工具类

package com.pngyul04;

import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.pngyul02.Sort;

public class TestC3P0Utils {

public static void main(String[] args) throws SQLException {

 

QueryRunner qr=new QueryRunner(C3P0Utils.getDataSource());

 

String sql="select * from sort";

List<Sort> list=qr.query(sql, new BeanListHandler<Sort>(Sort.class));
for(Sort sort : list){
System.out.println(sort);
}
}
}

 

测试结果:

 

PS : 在平时开发中常用C3P0连接池。另外,其实还可以不写配置文件也可以实现c3p0连接池的工具类,具体怎么实现自行学习。在实际开发当中还是常用写配置文件这种方式实现c3p0工具类。

DBCP连接池

DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。

 

 

配置文件

配置文件名称:*.properties

配置文件路径: 任意,但建议src (类路径)

配置文件内容:不能编写中文,必须使用记事本修改内容,不然中文注释就乱码了

dbcpconfig.properties配置文件代码如下:

#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/school
username=root
password=123
#<!-- 初始化连接 -->
initialSize=10
#最大连接数量
maxActive=50
#<!-- 最大空闲连接 -->
maxIdle=20
#<!-- 最小空闲连接 -->
minIdle=5
#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
maxWait=60000
#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;] 
#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
connectionProperties=useUnicode=true;characterEncoding=gbk
#指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true
#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE

defaultTransactionIsolation=READ_UNCOMMITTED

 

 常见配置项

分类

属性

描述

必须项                                    

driverClassName                                    

数据库驱动名称                                       

url

数据库的地址

username

用户名

password

密码

基本项(扩展)

maxActive

最大连接数量

minIdle

最小空闲连接

maxIdle

最大空闲连接

initialSize

初始化连接

 

编写DBCP工具类

 

package com.pngyul05;

 

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import com.pngyul01.JDBCUtilsConfig;

public class DBCPUtils {
private static DataSource dataSource;

static{
try {
InputStream in=DBCPUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
Properties pro=new Properties();
pro.load(in);
dataSource=BasicDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
throw new RuntimeException(e);
}
}

public static DataSource getDataSource(){
return dataSource;
}

public static Connection getConnection(){
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

 

}

PS:在上一篇中,编写DBCP工具类是用了另一种方法,不写 *.properties文件,而是在代码中之直接设置,两种方法都可以。

测试DBCP工具类

package com.pngyul05;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.pngyul02.Sort;

public class TestDBCPUtils {

public static void main(String[] args) throws SQLException {
QueryRunner qr=new QueryRunner(DBCPUtils.getDataSource());
String sql="select * from sort";
List<Sort> list=qr.query(sql, new BeanListHandler<Sort>(Sort.class));
for(Sort sort : list){
System.out.println(sort);
}
}
}

PS : 测试结果前者一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值