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