数据库连接池c3p0介绍与使用

来源:互联网 发布:淘宝男士夏装 编辑:程序博客网 时间:2024/06/06 10:43

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

下载

https://sourceforge.NET/projects/c3p0/files/latest/download?source=files下载最新C3PO的二进制包。

②以c3p0-0.9.5.2.bin.zip为例,解压得到如下图的目录:


其中的doc为说明文档,examples是自带的例子,lib是一些jar包,src是源码jar包。

③将lib下的c3p0-0.9.5.2.jar和mchange-commons-Java-0.2.11.jar导入eclipse中,并在工程的src下新建一个名为c3p0-config.xml,且内容为:

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

<c3p0-config>

  <named-config name="mvcApp"> 

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

      <propertyname="password">123456</property>

      <propertyname="driverClass">com.MySQL.jdbc.Driver</property>

      <propertyname="jdbcUrl">jdbc:mysql://localhost:3306/java</property>

<!—以上的user是数据库的用户,password是数据库的密码,driverClassmysql的数据库驱动,jdbcUrl是连接数据库的url -->

       <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数 -->

<propertyname="acquireIncrement">5</property>

<!--初始化时获取十个连接,取值应在minPoolSizemaxPoolSize之间 -->

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

<!--连接池中保留的最小连接数 -->

<propertyname="minPoolSize">10</property>

<!--连接池中保留的最大连接数 -->

<propertyname="maxPoolSize">50</property>

<!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。如果maxStatementsmaxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->

<propertyname="maxStatements">20</property> 

<!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 -->

<propertyname="maxStatementsPerConnection">5</property>

  </named-config>

</c3p0-config>

④在工程中新建一个JdbcUtils的工具类,代码如下:

 

import java.sql.Connection;

import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

 

public class JdbcUtils {

       /**

        * 释放连接

        * @param connection

        */

       public staticvoid releaseConnection(Connection connection){

              try {

                     if(connection != null ) {

                            connection.close();

                     }

              }catch (Exception e) {

                     e.printStackTrace();

              }

       }

       privatestatic DataSource dataSource = null;

       static{

              //dataSource资源只能初始化一次

              dataSource= new ComboPooledDataSource("mvcApp");

       }

       /**

        * 获取连接

        * @return

        * @throws SQLException

        */

       public staticConnection getConnection() throws SQLException{

              returndataSource.getConnection();

       }

}

其中的mvcAppc3p0-config.xmlnamed-configname值。DataSource的实例使用ComboPooledDataSource来生成的,这样我们就可以创建一个连接池,从而减少数据库连接时间。

最后,c3p0相似的dbcpproxool连接池,详见:

dbcp:http://baike.baidu.com/view/920072.htm

proxoolhttp://baike.baidu.com/view/2098784.htm


转载来自:http://blog.csdn.net/u013817349/article/details/50847904