首页 > 代码库 > c3p0数据库连接池管理
c3p0数据库连接池管理
之前已经讲过dbcp可以用于数据库连接池进行管理。另一种技术c3p0也可以用于数据库连接池管理,其中Spring等框架都是基于c3p0技术进行数据库连接池管理的。
使用之前需要引入 c3p0-0.9.5.2.jar 和 mchange-commons-java-0.2.11.jar 包,主要的类是ComboPooledDataSource,也有两种方式进行设置。一种是代码中进行设置,一种是在配置文件中设置。主要区别就是这种方式只有一个主要类ComboPooledDataSource。
他们之间可能方法名有所不同,但是功能是一样的。
1)在代码中进行配置,代码如下
ComboPooledDataSource dataSource = new ComboPooledDataSource(); try { dataSource.setJdbcUrl("jdbc:mysql:///mydb?useSSL=true"); dataSource.setDriverClass("com.mysql.jdbc.Driver"); dataSource.setUser("root"); dataSource.setPassword("123456"); dataSource.setMaxIdleTime(600); dataSource.setMaxPoolSize(100); dataSource.setInitialPoolSize(5); Connection conn = dataSource.getConnection(); String sql = "select * from user where id=?"; QueryRunner qr = new QueryRunner(); User user = qr.query(conn, sql, new BeanHandler<User>(User.class), 2); System.out.println(user); dataSource.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
2) 在配置文件中进行设置
注意:配置文件命名是 c3p0-config.xml。系统默认回去 CLASSPATH、WEB-INF/classes文件夹中搜索配置文件,所以把他放在 src 目录下即可。
ComboPooledDataSource dataSource = new ComboPooledDataSource("mysql_config"); //使用指定配置名的配置 try { Connection conn = dataSource.getConnection(); String sql = "select * from user where id=?"; QueryRunner qr = new QueryRunner(); User user = qr.query(conn, sql, new BeanHandler<User>(User.class), 2); System.out.println(user); dataSource.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
配置文件中可以进行设置的参数如下:
acquireIncrement acquireRetryAttempts acquireRetryDelay autoCommitOnClose automaticTestTable breakAfterAcquireFailure checkoutTimeout connectionCustomizerClassName connectionTesterClassName contextClassLoaderSource dataSourceName debugUnreturnedConnectionStackTraces driverClass extensions |
factoryClassLocation forceIgnoreUnresolvedTransactions forceSynchronousCheckins forceUseNamedDriverClass idleConnectionTestPeriod initialPoolSize jdbcUrl maxAdministrativeTaskTime maxConnectionAge maxIdleTime maxIdleTimeExcessConnections maxPoolSize maxStatements maxStatementsPerConnection |
minPoolSize numHelperThreads overrideDefaultUser overrideDefaultPassword password preferredTestQuery privilegeSpawnedThreads propertyCycle statementCacheNumDeferredCloseThreads testConnectionOnCheckin testConnectionOnCheckout unreturnedConnectionTimeout user |
配置文件样例如下
<c3p0-config> <default-config> <property name="checkoutTimeout">3000</property> <property name="idleConnectionTestPeriod">30</property> <property name="initialPoolSize">5</property> <property name="maxIdleTime">60</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">5</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> <named-config name="mysql_config"> <property name="initialPoolSize">5</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb?useSSL=true</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="maxPoolSize">100</property> <property name="initialPoolSize">5</property> <property name="maxIdleTime">60</property> <property name="password">123456</property> <property name="user">root</property> </named-config> </c3p0-config>
c3p0数据库连接池管理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。