在现在的大型数据库的使用中,连接池已经成为一个用得非常多的方法,在此先介绍一下连接池的工作原理:
工作原理:
在此先介绍两个参数:最小活动数目和最大活动数目。最小活动数目是指程序启动的时候连接池要创建的最少的连接数目,最大活动数目则是指允许创建的最多连接条数。
在程序启动的时候,连接池会根据最小连接数目假定为3,连接池就会根据这个数目去创建相应的连接。也就是说,连接池内最少存在着3个已经创建好的连接。当用户的程序中要求创建连接的时候,首先去查看已经创建好的连接中有没有空闲的连接,如果有,则把这个空闲的连接分配给用户,如果没有,则判断当前已经创建的连接数有没有超过最的活动数目,如果超过则返回空值,如果没有,则重新创建一条新的连接,并将这条连接返回给用户。
连接池有一个好处就是:不要每次都为用户的请求去创建一个新的连接,只有当连接池中没有的时候才要去创建,这样就提高了数据库访问的效率。
连接池实例:
此处用的是ORACLE+TOMCAT+MYECLIPSE结合的方式去创建连接池。首先。先在TOMCAT的安装目录下面:G:/java/Tomcat 5.5/conf找到server.xml文件,用记事本打开,在</host>前加上下面一段话:
<Context path="/yourProjectName" docBase="yourProjectName"
debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_yourProjectName_log." suffix=".txt"
timestamp="true"/>
<Resource color=#ff0066>jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"
username="dev12"
password="dev12"
url="jdbc:oracle:thin:@192.168.1.209:1521:workdaily"
driverClassName="oracle.jdbc.driver.OracleDriver"
maxWait="100"
maxActive="100"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"/>
</Context>
其中的部分参数我现在也不太清楚,不过有一点是要知道的,那就是Resource的属性 ,这是在程序中可以唯一查找到对应的连接池的标志,里面的TestDB可以自已改成想要的名字,但是程序中必须要与其对应。其中username是登陆数据库的用户名,password是密码,url是连接路径,driverClassName是驱动程序。
在程序中只要通过下面的语句就可以创建连接池了:
public class DBConnectionFactory {
private static final String JNDI = "java:comp/env/jdbc/TestDB";
protected DBConnectionFactory() {
super();
}
public static Connection getConnection() throws NamingException, SQLException {
javax.naming.InitialContext context = new javax.naming.InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) context.lookup(JNDI);
return ds.getConnection();
}
}
在外部使用的时候只要直接调用getConnection即可获得连接。