博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c3p0-0.9.1.2数据库连接池
阅读量:4054 次
发布时间:2019-05-25

本文共 4486 字,大约阅读时间需要 14 分钟。

C3PO是一个开放源代码的JDBC数据源实现项目,它在lib目录中与Hibernate一起发布,实现了JDBC3和JDBC2扩展规范说明的Connection和Statement池.C3PO类包位于<附件中/lib/c3p0/c3p0-0.9.1.2.jar>,配置Oracle数据源:

Java代码
  1. import java.beans.PropertyVetoException;   
  2. import java.sql.Connection;   
  3. import java.sql.SQLException;   
  4.   
  5. import com.mchange.v2.c3p0.ComboPooledDataSource;   
  6. import com.mchange.v2.c3p0.DataSources;   
  7.   
  8. public class Test {   
  9.     public static void main(String[] args) {   
  10.          ComboPooledDataSource cpds = new ComboPooledDataSource();   
  11.         try {   
  12.             // 数据源进行各种有效的控制:   
  13.             // 设置驱动   
  14.              cpds.setDriverClass("oracle.jdbc.driver.OracleDriver");   
  15.             // 设置数据库URL   
  16.              cpds.setJdbcUrl("jdbc:oracle:thin:@10.2.4.77:1521:ORCL");   
  17.             // 设置用户名   
  18.              cpds.setUser("**********");   
  19.             // 设置密码   
  20.              cpds.setPassword("**********");   
  21.             // 当连接池中的连接用完时,C3PO一次性创建新的连接数目;   
  22.              cpds.setAcquireIncrement(3);   
  23.             // 定义在从数据库获取新的连接失败后重复尝试获取的次数,默认为30;   
  24.              cpds.setAcquireRetryAttempts(30);   
  25.             // 两次连接中间隔时间默认为1000毫秒   
  26.              cpds.setAcquireRetryDelay(1000);   
  27.             // 连接关闭时默认将所有未提交的操作回滚 默认为false;   
  28.              cpds.setAutoCommitOnClose(false);   
  29.             // 获取连接失败将会引起所有等待获取连接的线程异常,但是数据源仍有效的保留,并在下次调用getConnection()的时候继续尝试获取连接.如果设为true,那么尝试获取连接失败后该数据源将申明已经断开并永久关闭.默认为false   
  30.              cpds.setBreakAfterAcquireFailure(false);   
  31.             // 当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待.单位毫秒,默认为0   
  32.              cpds.setCheckoutTimeout(0);   
  33.             // 隔多少秒检查所有连接池中的空闲连接,默认为0表示不检查;   
  34.              cpds.setIdleConnectionTestPeriod(0);   
  35.             // 初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值.默认为3   
  36.              cpds.setInitialPoolSize(10);   
  37.             // 最大空闲时间,超过空闲时间的连接将被丢弃.为0或负数据则永不丢弃.默认为0;   
  38.              cpds.setMaxIdleTime(0);   
  39.             // 连接池中保留的最大连接数据.默认为15   
  40.              cpds.setMaxPoolSize(20);   
  41.             // JDBC的标准参数,用以控制数据源内加载的PreparedStatement数据.但由于预缓存的Statement属于单个Connection而不是整个连接池.所以设置这个参数需要考滤到多方面的因素,如果maxStatements   
  42.             // 与maxStatementsPerConnection均为0,则缓存被关闭.默认为0;   
  43.              cpds.setMaxStatements(0);   
  44.             // 连接池内单个连接所拥有的最大缓存被关闭.默认为0;   
  45.              cpds.setMaxStatementsPerConnection(0);   
  46.             // C3P0是异步操作的,缓慢的JDBC操作通过帮助进程完成.扩展这些操作可以有效的提升性能,通过多数程实现多个操作同时被执行.默为为3   
  47.              cpds.setNumHelperThreads(3);   
  48.             // 用户修改系统配置参数执行前最多等待的秒数.默认为300;   
  49.              cpds.setPropertyCycle(300);   
  50.             // 获取数据连接   
  51.              Connection conn = cpds.getConnection();   
  52.             if ( conn != null) {   
  53.                  System.out.println("OK");   
  54.                 // 关闭连接,当前连接被连接池收回   
  55.                  conn.close();   
  56.              }   
  57.   
  58.          } catch (PropertyVetoException e) {   
  59.              e.printStackTrace();   
  60.          } catch (SQLException e) {   
  61.              e.printStackTrace();   
  62.          } finally {   
  63.             try {   
  64.                 //关闭数据连接池   
  65.                  DataSources.destroy(cpds);   
  66.              } catch (SQLException e) {   
  67.                  e.printStackTrace();   
  68.              }   
  69.          }   
  70.      }   
  71. }  
import java.beans.PropertyVetoException;import java.sql.Connection;import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;import com.mchange.v2.c3p0.DataSources;public class Test { public static void main(String[] args) {  ComboPooledDataSource cpds = new ComboPooledDataSource();  try {   // 数据源进行各种有效的控制:   // 设置驱动   cpds.setDriverClass("oracle.jdbc.driver.OracleDriver");   // 设置数据库URL   cpds.setJdbcUrl("jdbc:oracle:thin:@10.2.4.77:1521:ORCL");   // 设置用户名   cpds.setUser("**********");   // 设置密码   cpds.setPassword("**********");   // 当连接池中的连接用完时,C3PO一次性创建新的连接数目;   cpds.setAcquireIncrement(3);   // 定义在从数据库获取新的连接失败后重复尝试获取的次数,默认为30;   cpds.setAcquireRetryAttempts(30);   // 两次连接中间隔时间默认为1000毫秒   cpds.setAcquireRetryDelay(1000);   // 连接关闭时默认将所有未提交的操作回滚 默认为false;   cpds.setAutoCommitOnClose(false);   // 获取连接失败将会引起所有等待获取连接的线程异常,但是数据源仍有效的保留,并在下次调用getConnection()的时候继续尝试获取连接.如果设为true,那么尝试获取连接失败后该数据源将申明已经断开并永久关闭.默认为false   cpds.setBreakAfterAcquireFailure(false);   // 当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待.单位毫秒,默认为0   cpds.setCheckoutTimeout(0);   // 隔多少秒检查所有连接池中的空闲连接,默认为0表示不检查;   cpds.setIdleConnectionTestPeriod(0);   // 初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值.默认为3   cpds.setInitialPoolSize(10);   // 最大空闲时间,超过空闲时间的连接将被丢弃.为0或负数据则永不丢弃.默认为0;   cpds.setMaxIdleTime(0);   // 连接池中保留的最大连接数据.默认为15   cpds.setMaxPoolSize(20);   // JDBC的标准参数,用以控制数据源内加载的PreparedStatement数据.但由于预缓存的Statement属于单个Connection而不是整个连接池.所以设置这个参数需要考滤到多方面的因素,如果maxStatements   // 与maxStatementsPerConnection均为0,则缓存被关闭.默认为0;   cpds.setMaxStatements(0);   // 连接池内单个连接所拥有的最大缓存被关闭.默认为0;   cpds.setMaxStatementsPerConnection(0);   // C3P0是异步操作的,缓慢的JDBC操作通过帮助进程完成.扩展这些操作可以有效的提升性能,通过多数程实现多个操作同时被执行.默为为3   cpds.setNumHelperThreads(3);   // 用户修改系统配置参数执行前最多等待的秒数.默认为300;   cpds.setPropertyCycle(300);   // 获取数据连接   Connection conn = cpds.getConnection();   if ( conn != null) {    System.out.println("OK");    // 关闭连接,当前连接被连接池收回    conn.close();   }  } catch (PropertyVetoException e) {   e.printStackTrace();  } catch (SQLException e) {   e.printStackTrace();  } finally {   try {    //关闭数据连接池    DataSources.destroy(cpds);   } catch (SQLException e) {    e.printStackTrace();   }  } }}

 

注意除了导入c3p0-0.9.1.2.jar外还要导放log4j的包和数据库驱动包

转载地址:http://qbtci.baihongyu.com/

你可能感兴趣的文章
医疗行业运用企业云盘可以带来什么样的提升
查看>>
媒体广告业如何将内容资产进行高效地综合管理与利用
查看>>
能源化工要怎么管控核心数据
查看>>
媒体广告业如何运用云盘提升效率
查看>>
企业如何运用企业云盘进行数字化转型-实现新发展
查看>>
司法如何运用电子智能化加快现代化建设
查看>>
iSecret&nbsp;1.1&nbsp;正在审核中
查看>>
IOS开发的开源库
查看>>
IOS开发的开源库
查看>>
Jenkins - sonarqube 代码审查
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成(一)
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成 - 单机部署(二)
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成 - 高可用集群部署(三)
查看>>
Golang struct 指针引用用法(声明入门篇)
查看>>
Linux 粘滞位 suid sgid
查看>>
C#控件集DotNetBar安装及破解
查看>>
Winform皮肤控件IrisSkin4.dll使用
查看>>
Winform多线程
查看>>
C# 托管与非托管
查看>>
Node.js中的事件驱动编程详解
查看>>