C3P0 连接池的性能比之DBCP要更胜一筹,Hibernate就推荐使用该连接池。C3P0连接池不仅可以自动清理不再使用的Connection,还可以自动清理Statement和ResultSet。
import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import com.mchange.v2.c3p0.ComboPooledDataSource; public class C3P0_JDBC { public static void main(String[] args) { ComboPooledDataSource ds=new ComboPooledDataSource(); Connection conn=null; try { ds.setDriverClass("oracle.jdbc.driver.OracleDriver"); ds.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:orcl"); ds.setUser("scott"); ds.setPassword("tiger"); ds.setMaxPoolSize(40); ds.setMinPoolSize(2); ds.setInitialPoolSize(10); ds.setMaxStatements(100); conn=ds.getConnection();//通过数据源获取数据库连接 Statement stmt=conn.createStatement(); ResultSet rs=stmt.executeQuery("select * from dept"); while(rs.next()){ int deptno=rs.getInt("deptno"); String dname=rs.getString("dname"); String loc=rs.getString("loc"); System.out.println(deptno+"\t"+dname+"\t"+loc); } } catch (PropertyVetoException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally{ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
public final class ComboPooledDataSource extends AbstractPoolBackedDataSource implements PooledDataSource
public interface PooledDataSource extends DataSource