dbcp数据库链接池
java
就性能而言,1.4版本的链接池性能比1.2版本高,跟c3p0差很少mysql
使用此数据库链接池必须导入commons-dbcp,commons-pool包,如下是其实现方法:sql
import java.sql.SQLException; import java.sql.Statement; import org.apache.commons.dbcp.BasicDataSource; //dbcp数据库链接池链接方法 public class BasicDbcp { public static void main(String[] args) throws SQLException { String url="jdbc:mysql://localhost:3306/test"; String dr="com.mysql.jdbc.Driver"; //实例化数据源对象 BasicDataSource ds=new BasicDataSource(); //设置属性 ds.setDriverClassName(dr); ds.setUrl(url); ds.setUsername("root"); ds.setPassword("123"); System.err.println("被包裹的数据链接(内部私有类):"+ds.getConnection().getClass()); Statement sta= ds.getConnection().createStatement(); ResultSet rs= sta.executeQuery("select * from user"); while(rs.next()){ System.out.println(rs.getString("name")); } rs.close(); sta.close(); ds.close(); } }
同时也能够在属性文件(properties)中存放基本属性,而后再在其中获取:数据库
import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; //根据配置文件来链接数据库 public class BasicDbcpProperties { private static DataSource ds=null; public BasicDbcpProperties(){ //声明资源文件对象 Properties pro=new Properties(); try { //load方法来获取此文件 //以流的方式将此文件传送过来 pro.load(this.getClass().getResourceAsStream("jdbc.properties")); //以 工厂类来建立这个DataSource资源 ds=BasicDataSourceFactory.createDataSource(pro); Connection con=ds.getConnection(); System.out.println(con); con.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) throws SQLException { //初始化10个链接以后,不会再自动增长链接,所以此处没有设计好 Connection con=null; long start=System.currentTimeMillis(); new BasicDbcpProperties(); for(int i=0;i<17;i++){ con=ds.getConnection(); System.out.println(con); } long end=System.currentTimeMillis(); System.out.println(end-start); } }
2.C3P0数据库链接池
apache
只须要导入C3P0-0.9.jar包便可
性能
import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.SQLException; import com.mchange.v2.c3p0.ComboPooledDataSource; import com.mchange.v2.c3p0.DataSources; public class C3PODemo { public static void main(String[] args) throws PropertyVetoException, SQLException { //获取DataSource ComboPooledDataSource ds=new ComboPooledDataSource(); ds.setDriverClass("com.mysql.jdbc.Driver"); ds.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/wj"); ds.setUser("root"); ds.setPassword("root"); ds.setInitialPoolSize(3); ds.setMinPoolSize(10); ds.setMinPoolSize(5); Connection con=ds.getConnection(); System.out.println(con); System.err.print(con); DataSources.destroy(ds); } }