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); } }