Java中使用C3P0连接池
来源:互联网 发布:人工智能 高端服务业 编辑:程序博客网 时间:2024/05/16 14:32
先看官网给的范例:
import java.sql.*;import javax.naming.*;import javax.sql.DataSource;import com.mchange.v2.c3p0.DataSources;/** * This example shows how to acquire a c3p0 DataSource and * bind it to a JNDI name service. */public final class JndiBindDataSource{ // be sure to load your database driver class, either via // Class.forName() [as shown below] or externally (e.g. by // using -Djdbc.drivers when starting your JVM). static {try { Class.forName( "com.mysql.jdbc.Driver" ); }catch (Exception e) { e.printStackTrace(); } } public static void main(String[] argv) {try {// let a command line arg specify the name we will// bind our DataSource to.String jndiName = argv[0]; // acquire the DataSource using default pool params... // this is the only c3p0 specific code hereDataSource unpooled = DataSources.unpooledDataSource("jdbc:mysql://127.0.0.1:3306/gpsdata", "root", "root");DataSource pooled = DataSources.pooledDataSource( unpooled );// Create an InitialContext, and bind the DataSource to it in // the usual way.//// We are using the no-arg version of InitialContext's constructor,// therefore, the jndi environment must be first set via a jndi.properties// file, System properties, or by some other means.InitialContext ctx = new InitialContext();ctx.rebind( jndiName, pooled );System.out.println("DataSource bound to nameservice under the name \"" + jndiName + '\"'); }catch (Exception e) { e.printStackTrace(); } } static void attemptClose(ResultSet o) {try { if (o != null) o.close();}catch (Exception e) { e.printStackTrace();} } static void attemptClose(Statement o) {try { if (o != null) o.close();}catch (Exception e) { e.printStackTrace();} } static void attemptClose(Connection o) {try { if (o != null) o.close();}catch (Exception e) { e.printStackTrace();} } private JndiBindDataSource() {}}
1.建立 com.mchange.v2.c3p0.ComboPooledDataSource
这是一个JavaBean,在使用前应设置它的jdbcURL、user、password和driverClass。其他参数参考configuration properties
- ComboPooledDataSource cpds = new ComboPooledDataSource(); cpds.setDriverClass( "org.postgresql.Driver" );
- cpds.setJdbcUrl( "jdbc:postgresql://localhost/testdb" ); cpds.setUser("swaldman");
- cpds.setPassword("test-password");
- // 下面的设置是可选的,c3p0可以在默认条件下工作,也可以设置其他条件
- cpds.setMinPoolSize(5);
- cpds.setAcquireIncrement(5);
- cpds.setMaxPoolSize(20);
也可以使用命名Configuration
- ComboPooledDataSource cpds = new ComboPooledDataSource("intergalactoApp");
2.使用工厂类com.mchange.v2.c3p0.DataSources
com.mchange.v2.c3p0.DataSources 可以按照传统的JDBC驱动建立一个无连接池的DataSource,然后转化为连接池的DataSource。
- DataSource ds_unpooled = DataSources.unpooledDataSource("jdbc:postgresql://localhost/testdb", "swaldman", "test-password");
- DataSource ds_pooled = DataSources.pooledDataSource( ds_unpooled );
- // 此时DataSource已经可以使用,但应该显示的设置driver Class
- Class.forName("org.postgresql.Driver");
如果想设置其中的参数,可以将参数放入一个Map中
- DataSource ds_unpooled = DataSources.unpooledDataSource("jdbc:postgresql://localhost/testdb", "swaldman", "test-password");
- Map overrides = new HashMap();
- overrides.put("maxStatements", "200"); overrides.put("maxPoolSize", new Integer(50));
- //建立一个包括默认值和设置值的PooledDataSource
- ds_pooled = DataSources.pooledDataSource( ds_unpooled, overrides );
如果使用命名的Configuration,可以如下
- ds_pooled = DataSources.pooledDataSource( ds_unpooled, "intergalactoAppConfig", overrides );
销毁DataSource有两种方式
DataSource.destroy()方式
- DataSource ds_pooled = null;
- try {
- DataSource ds_unpooled = DataSources.unpooledDataSource("jdbc:postgresql://localhost/testdb", "swaldman", "test-password");
- ds_pooled = DataSources.pooledDataSource( ds_unpooled );
- // 下面正常使用DataSource...
- }
- finally {
- DataSources.destroy( ds_pooled );
- }
另一种是PooledDataSource 接口提供的close() 方法
- static void cleanup(DataSource ds) throws SQLException {
- // 确定是否为c3p0的PooledDataSource
- if ( ds instanceof PooledDataSource) {
- PooledDataSource pds = (PooledDataSource) ds;
- pds.close();
- } else
- System.err.println("Not a c3p0 PooledDataSource!");
- }
- JAVA中C3P0连接池的使用
- Java中使用C3P0连接池
- Java中使用C3P0连接池
- Java中使用C3P0连接池
- java c3p0连接池 不用spring单独使用c3p0
- 在Hibernate中使用C3P0连接池
- spring中使用c3p0连接池
- SSH项目中使用c3p0连接池
- java JDBC 使用C3P0连接池
- c3p0连接池使用
- 使用C3P0连接池
- C3P0连接池使用
- C3P0连接池使用
- Java C3P0连接池
- java C3P0连接池
- Java中读取配置文件使用jdbc-c3p0连接池连接sqlserver数据库
- java使用c3p0连接数据库
- java使用c3p0连接mysql
- J2EE中的13种技术规范
- suid
- JNI 入门介绍(jstring与char*的转换)
- iphone -- Notification使用
- 冒烟测试
- Java中使用C3P0连接池
- Hadoop LZO的安装与配置
- php的public、protected、private三种访问控制模式的区别
- 首篇
- 9大最火的移动开发技能
- GoAgent原理的理解
- OCP-047-192
- 五种创建单例的方式
- android 动画之插值器