(一)DBCP:

DBCPApache提供的一款开源免费的数据库连接池!

Hibernate3.0之后不再对DBCP提供支持!因为Hibernate声明DBCP有致命的缺欠!DBCP因为Hibernate的这一毁谤很是生气,并且说自己没有缺欠。

1、导入jar包

  mysql-connector-java-5.1.28-bin.jar

  commons-dbcp-1.4.jar

  commons-pool-1.3.jar

2、代码

import org.apache.commons.dbcp.BasicDataSource;
import org.junit.Test;
import java.sql.Connection;
import java.sql.SQLException;


public class Demo1 {


public void fun1() throws SQLException {
/*
* 1. 创建连接池对象
* 2. 配置四大参数
* 3. 配置池参数
* 4. 得到连接对象
*/
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/stdudent");
dataSource.setUsername("root");
dataSource.setPassword("123");

ds.setMaxActive(20);//最大连接数

ds.setMaxIdle(10);//最大空闲连接数

ds.setInitialSize(10);//初始化连接数

ds.setMinIdle(2);//最小空闲连接数

ds.setMaxWait(1000);//最大等待毫秒


Connection con = dataSource.getConnection();
System.out.println(con.getClass().getName());

/**
* 连接池内部使用四大参数创建了连接对象!即mysql驱动提供的Connection
* 连接池使用mysql的连接对象进行了装饰,只对close()方法进行了增强!
* 装饰之后的Connection的close()方法,用来把当前连接归还给池!
*/
con.close();//把连接归还给池!
}
}

(二)C3P0: C3P0也是开源免费的连接池!C3P0被很多人看好!

现在连接数据库用户c3p0,不用dbcp

1、导jar包

  mysql-connector-java-5.1.28-bin.jar

  c3p0-0.9.2-pre1.jar

     mchange-commons-0.2.jar

2、写代码

   (1)无配置文件

  public void fun1() throws PropertyVetoException, SQLException {


ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setJdbcUrl("jdbc:mysql://localhost:3306");
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setUser("root");
ds.setPassword("123");

ds.setAcquireIncrement(5);// 每次的增量为5
ds.setInitialPoolSize(20);// [初始化连接数
ds.setMinPoolSize(2);// [最少连接数
ds.setMaxPoolSize(50);// [最多连接数

Connection con = ds.getConnection();
System.out.println(con);
con.close();
}

   (2)配置文件

      配置文件名称必须为:c3p0-config.xml

  配置文件必须放在src下面

      c3p0也可以指定配置文件,而且配置文件可以是properties,也可骒xml的。当然xml的高级一些了。但是c3p0的配置文件名必须为c3p0-config.xml,并且必须放在类路径下。

  

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

<c3p0-config>

<default-config>

<property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</property>

<property name="driverClass">com.mysql.jdbc.Driver</property>

<property name="user">root</property>

<property name="password">123</property>

<property name="acquireIncrement">3</property>

<property name="initialPoolSize">10</property>

<property name="minPoolSize">2</property>

<property name="maxPoolSize">10</property>

</default-config>

<named-config name="oracle-config">

<property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</property>

<property name="driverClass">com.mysql.jdbc.Driver</property>

<property name="user">root</property>

<property name="password">123</property>

<property name="acquireIncrement">3</property>

<property name="initialPoolSize">10</property>

<property name="minPoolSize">2</property>

<property name="maxPoolSize">10</property>

</named-config>

</c3p0-config>

 c3p0的配置文件中可以配置多个连接信息,可以给每个配置起个名字,这样可以方便的通过配置名称来切换配置信息。上面文件中默认配置为mysql的配置,名为oracle-config的配置也是mysql的配置。

 

public void fun2() throws PropertyVetoException, SQLException {

ComboPooledDataSource ds = new ComboPooledDataSource();

Connection con = ds.getConnection();

System.out.println(con);

con.close();

}

public void fun2() throws PropertyVetoException, SQLException {

ComboPooledDataSource ds = new ComboPooledDataSource("orcale-config");

Connection con = ds.getConnection();

System.out.println(con);

con.close();

}

 

    

完善JDBCUtil.java

// 配置文件的默认配置!要求你必须给出c3p0-config.xml!!!
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();

/**
* 使用连接池返回一个连接对象
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}

 

posted on 2015-08-25 17:07  脆皮软心  阅读(239)  评论(0)    收藏  举报