DBCP连接池

@Test

 public void testPool() throws Exception{

  BasicDataSource ds  = new BasicDataSource();

  //设置driver

  ds.setDriverClassName("com.mysql.jdbc.Driver");

  

  //设置url

  ds.setUrl("jdbc:mysql:///db909?characterEncoding=utf8");

  ds.setUsername("root");

  ds.setPassword("123456");

  ds.setInitialSize(2);//设置在开始时创建几个链接

  ds.setMaxActive(5);//设置最多有几个链接

  //下面两个很少用

  ds.setDefaultAutoCommit(true);//设置所有连接是否自动提交(默认)

  ds.setMaxIdle(3000);//设置每个连接最大的空闲时间

  Connection conn  = ds.getConnection();

  Connection conn2  = ds.getConnection();

  Connection conn3  = ds.getConnection();

  Connection conn4  = ds.getConnection();

  Connection conn5  = ds.getConnection();

  System.out.println("c1"+conn.hashCode()+","+conn.getClass());

  System.out.println("c2"+conn2.hashCode());

  System.out.println("c3"+conn3.hashCode());

  System.out.println("c4"+conn4.hashCode());

  System.out.println("c5"+conn5.hashCode());

  conn.close();

  Connection conn6  = ds.getConnection();

  System.out.println("c6"+conn6.hashCode());

 }

输出

c1956723359,class org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
c21439429624
c31090407113
c41994388340
c51760068004
c6956723359

/*
  * 通过配置文件创建连接
  */
 @Test
 public void testPool2() throws Exception {
  Properties p = new Properties();
  p.load(DbcpPool.class.getResourceAsStream("jdbc.properties"));
  
  DataSource ds = new BasicDataSourceFactory().createDataSource(p);
  Connection c1 = ds.getConnection();
  Connection c2 = ds.getConnection();
  Connection c3 = ds.getConnection();
  System.out.println(c1.hashCode()+","+c1.getClass());
  System.out.println(c2.hashCode()+","+c2.getClass());
  System.out.println(c3.hashCode()+","+c3.getClass());
  c3.close();
  Connection c4 = ds.getConnection();
  System.out.println(c4.hashCode()+","+c4.getClass());
 }

#以下所有属性,都来自于BasicDataSource的setXxxx方法
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///db909
username=root
password=123456
maxActive=3

输出:

696865876,class org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
1996450841,class org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
2064783959,class org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
2064783959,class org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper

 

在一个项目中,就只能拥有一个DataSource的实例。在这个DataSource3中有多个Connection

声明一个工厂类,创建维护唯一的一个DataSource

 

你可能感兴趣的:(JAVA连接池)