数据库连接的建立及关闭极耗系统资源的操作,在多层结果的应用环境中,这种资源的耗费对系统性能影响尤为明显。

通过DriverManager获得的数据库连接,一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完后立即关闭连接。频繁的打开、关闭连接将造成系统性能低下。

数据库连接池的解决方案是:当应用程序启动时,系统主动建立足够的数据库连接,并将这些连接组成一个连接池。每次应用程序请求数据库连接时,无需重新打开连接,而是从池中取出已有的连接使用,使用完后,不再关闭数据库连接,而是直接将连接归还给连接池。通过使用连接池,经大大提供程序运行效率。

DBCP数据源是Apache软件基金组织下的开源连接池实现。Tomcat的连接池正是采用该连接池来实现的。数据库连接池可以与应用服务器整合使用,也可由应用程序独立使用。

package com.sun.demo;

import java.sql.Connection;

import org.apache.commons.dbcp.BasicDataSource;

public class Test04 {

	/**
	 * 此程序使用DBCP数据源取得数据库连接。
	 * 
	 *             主流数据库连接池之一(DBCP、c3p0、proxool),单独使用DBCP需要使用commons-dbpc.jar、
	 *             commons-collections.jar、commons-pool.jar三个包
	 *             commons-dbpc.jar:连接池的实现 
	 *             commons-pool.jar:连接池实现的依赖库
	 */
	public static void main(String[] args) throws Exception {
		// 创建数据源对象
		BasicDataSource ds = new BasicDataSource();
		// 设置连接池所需的驱动
		ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
		// 设置连接数据库的url
		ds.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:jssbook");
		// 设置连接数据库的用户名
		ds.setUsername("scott");
		// 设置数据库的密码
		ds.setPassword("tiger");
		// 设置连接池的初始连接数
		ds.setInitialSize(5);
		// 设置连接池最多可有有多少个活动连接数
		ds.setMaxActive(20);
		// 设置连接池中最少有2个空闲的连接
		ds.setMinIdle(2);
		// 通过数据源获取连接
		Connection con = ds.getConnection();
		con.close();
	}

}

 数据源和数据库连接不同,数据源无须创建多个,它是产生数据库连接的工厂,因此整个应用只需要一个数据源即可。建议吧上面的程序中ds设置成static成员变量,并且在应用开始时立即初始化数据源对象,程序中所有需要获取数据库连接的地方直接访问该ds对象,并获取数据库连接即可,当数据库访问结束后,程序还是像以前一样关闭数据库连接。

 

posted on 2014-11-24 22:10  火拳艾斯  阅读(690)  评论(0编辑  收藏  举报