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