1. 数据源和数据库连接不同,数据源无需创建多个,它是产生数据库连接的工厂,因此整个应用只需要一个数据源即可。
2. 当数据库访问结束后,程序还是像以前一样关闭数据库连接:conn.close();
但上面的代码并没有关闭数据库的物理连接, 它仅仅把数据库连接释放,归还给了数据库连接池。
public class TestPool {
/**
* 手动连接DBCP数据源
* 1.加入jar(commons-dbcp2-2.6.0.jar)包,依赖于commons-pool2-2.6.1.jar包
* 2.创建数据库连接池
* 3.为数据源实例指定必须的属性
* 4.从数据源获取数据库连接
* @throws SQLException
*/
@Test
public void testDBCP() throws SQLException{
//1.创建数据库连接池
BasicDataSource dataSource = new BasicDataSource();
//2.为数据源实例指定必须的属性
dataSource.setUsername("okaya10");
dataSource.setPassword("okaya10");
dataSource.setUrl("jdbc:oracle:thin:@10.0.7.208:1521:ORCL");
dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
//3.指定数据源的一些可选的属性
//4.从数据源获取数据库连接
Connection connection = dataSource.getConnection();
System.out.println(connection.getClass());
}
/**
* 通过读取配置文件获取连接
* 1.加载properties文件:配置文件的中的键需要来自于BasicDataSource属性值。
* 2.调用BasicDataSourceFactory的createDataSource()方法创建DataSource
* 3.从DataSource实例中获取数据库连接。
* @throws Exception
*/
@Test
public void testDBPCWithSourceFactory() throws Exception {
Properties properties = new Properties();
InputStream inStream = TestPool.class.getClassLoader().getResourceAsStream("dbcp.properties");
properties.load(inStream);
DataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
System.out.println(dataSource.getConnection());
}
}