数据库连接池

在现在的大型数据库的使用中,连接池已经成为一个用得非常多的方法,在此先介绍一下连接池的工作原理:

 

工作原理:

    在此先介绍两个参数:最小活动数目和最大活动数目。最小活动数目是指程序启动的时候连接池要创建的最少的连接数目,最大活动数目则是指允许创建的最多连接条数。

    在程序启动的时候,连接池会根据最小连接数目假定为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即可获得连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值