版权声明:本文由李章勇老师创作,请支持原创,谢谢 https://blog.csdn.net/weixin_37654790/article/details/85156361
我们接着《JDBC数据源连接池(1)---DBCP》继续介绍数据源连接池。
首先,在Web项目的WebContent--->WEB-INF--->lib文件夹中添加C3P0的jar包。
其次,编写C3P0的xml配置文件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://localhost:3306/itszt2</property> <property name="user">root</property> <property name="password">2017</property> <property name="automaticTestTable">con_test</property> <property name="checkoutTimeout">30000</property> <property name="idleConnectionTestPeriod">30</property> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">10</property> <property name="maxStatements">200</property> <user-overrides user="test-user"> <property name="maxPoolSize">10</property> <property name="minPoolSize">1</property> <property name="maxStatements">0</property> </user-overrides> </default-config> </c3p0-config>
再次,编写Util_3_JDBC_C3P0工具类,代码如下:
import com.mchange.v2.c3p0.ComboPooledDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * C3P0数据源连接池 */ public abstract class Util_3_JDBC_C3P0 { private static DataSource dataSource=null; //注册mysql驱动 static { try { dataSource =new ComboPooledDataSource(); } catch (Exception e) { throw new RuntimeException("数据源连接池失败!"); } } /** * 打开与数据库的连接 * @return 一个连接对象 */ public static Connection openConnection(){ try { return dataSource.getConnection(); } catch (SQLException e) { e.printStackTrace(); } return null; } //释放资源 public static void release(Connection connection, Statement statement, ResultSet resultSet){ if(connection!=null){ try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } if (statement != null) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } if (resultSet != null) { try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
最后,我们在com.itszt.demo文件夹中的LoginServlet.java的Servlet文件中,将产生Connection对象的方式修改为C3P0连接池方式即可。
通常情况下,C3P0数据源连接池效率一般要高于DBCP。