数据连接池的使用

    

    相比传统的数据连接而言,每次使用Connection 连接数据库时(增删查改)每次都会调用new一个连接对象,去访问数据库,而Connection对象的每次使用,在调用close()方法时,这时候的connection 它只是处于一种关闭的状态,实际而言,他还是存在与内存当中的,这样当我们的业务需求量大大增加时,这样会很耗费我们客户端的内存资源。

    而数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数。

    当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中(你可以想象一下,当我们打10086时,我们就是相当与调用连接池的connection对象,而超过一定人数时,我们就听到提示音:请稍后。。正在为您接通。。)。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:

    1. 最小连接数:是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费。

    2. 最大连接数:是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作

    3. 最小连接数与最大连接数差距:最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

    那么如何使用连接池呢?以mysql为例

    第一步:配置context.xml文件,在Tomcat conf 文件的context.xml编写如下代码

        <Resource name="jdbc/amilsms" auth="Container" type="javax.sql.DataSource"

            maxActive="100" maxIdle="20" maxWait="10000" username="root"

            password="root" driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://127.0.0.1:3306/amilsms?useUnicode=true&amp;characterEncoding=UTF-8"/>

        name:标识Resource的JBDI名字  

        auth:指定管理Resource的Manager

        maxActive:最大连接数,

        maxIdle 最小连接数 

        maxWait,数据库连接处于空闲状态的最长时间,超过则抛出异常,所需要等待的时间毫秒为单位

        username:连接数据库的用户名

        password:连接数据库的密码

        driverClassName:数据库驱动类型

          url:连接地址

   第二步:配置完context.xml文件之后,然后就需要配置web项目中WEB-INF的web.xml文件

        <resource-ref>

        <description>news DataSource</description>

        <res-ref-name>连接的数据库名</res-ref-name>

        <res-type>javax.sql.DataSource</res-type>

        <res-auth>Container</res-auth>

        </resource-ref>

   第三步:加载数据库驱动

   第四步:再编写BaseDao用于获取数据库连接的方法

    1.获取Context.xml 配置文件

    Context tx=new InitialContext();

    2.再使用lookup() 方法查找数据源获得数据库信息

    DataSource ds=(DataSource ) ct.lookup("java:comp/env/数据库名");

    3.获取连接对象

    Connection con=ds.getConnection();  

    

    在配置数据连接池,比较容易犯的几个错误

    1.配置context.xml文件和web.xml配置项目文件连接的数据库名不一致

    2.配置完数据连接池之后,在创建servlet 时自动生成的web.xml,节点生成发生错误

    3.找不到驱动程序,把驱动复制到项目文件中,在重新生成

        

原文地址:https://www.cnblogs.com/NameZjk/p/8280992.html

时间: 2024-08-24 17:33:31

数据连接池的使用的相关文章

Netbeans 中创建数据连接池和数据源步骤

1.启动glassfish服务器, 在浏览器的地址栏中输入 http://localhost:4848 2.首先建立JDBC Connection Pools: 3.new 一个Connectio Pools 4.对General Settings属性填写: 5.填写Datasource Classname:com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource Ping属性选中,可以用来检验数据连接池是否创建成功! . 6.对Ad

记录一个简单的dbcp数据连接池

这个示例用到了ThreadLocal与dbcp,我觉得有点意思,就整理了下.使用dbcp,肯定要导入commons-dbcp.jar包.下面直接贴DBUtil代码: public class DBUtil { private static DataSource ds; //定义一个数据连接池 //threadLocal是线程的局部变量,它的实例通常是类中的 private static 字段 private static ThreadLocal<Connection> connLocal=ne

数据连接池JNDI

数据库连接有很多中方式,JDBC数据库的连接方式,前边我们已经介绍过了,而开发中我们经常使用的是DataBaseConnectionPool(数据库连接池,DBCP).数据库连接池到底是什么?它比jdbc数据库连接有什么优势呢?它又怎么使用呢? 一,先看一下JDBC连接,每次用户访问数据库时,需要JDBC为我们创建数据库连接,我们使用,然后关闭.而当我们加断点测试,可以发现这个过程中创建数据库连接这个过程是比较费时间的,而不是我们在数据库中操作数据费时间.所以JDBC这种方式的效率大大折扣.而且

jdk 动态代理 数据连接池

package com.itheima.datasource; import java.io.PrintWriter; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayL

c3p0 数据连接池 流行开源

注意事项:配置文件规定命名,不能更改   c3p0-config <?xml version="1.0" encoding="UTF-8"?><c3p0-config>    <default-config>        <property name="driverClass">com.mysql.jdbc.Driver</property>        <property n

数据连接池——JNDI

数据库连接有很多中方式,JDBC数据库的连接方式,前边我们已经介绍过了,而开发中我们经常使用的是DataBaseConnectionPool(数据库连接池,DBCP).数据库连接池到底是什么?它比jdbc数据库连接有什么优势呢?它又怎么使用呢? 一,先看一下JDBC连接,每次用户访问数据库时,需要JDBC为我们创建数据库连接,我们使用,然后关闭.而当我们加断点测试,可以发现这个过程中创建数据库连接这个过程是比较费时间的,而不是我们在数据库中操作数据费时间.所以JDBC这种方式的效率大大折扣.而且

Hibernate_14_数据连接池的使用

在主配置文件Hibernate.cfg.xml中设置: <!-- 设置默认的事务隔离级别: 隔离级别 对应的整数表示 READ UNCOMMITED 1 READ COMMITED 2 REPEATABLE READ 4 SERIALIZEABLE 8 --> <property name="connection.isolation">2</property> <!-- C3P0连接池设定--> <!-- 使用c3p0连接池 配置连

关于.NET大数据量大并发量的数据连接池管理

转自:http://www.cnblogs.com/virusswb/archive/2010/01/08/1642055.html 我以前对.NET连接池的认识是错误的,原来以为在web.config中设置了连接池,每次发起的数据库连接也还是会是新的,每个sql请求就是一个连接,需要打开和关闭.因此就想设计一个连接池,然后保持固定的连接数,需要数据库连接就从连接池中取出来一个给请求用,用完毕就设置连接空闲,等待下次请求.这样看来是多余的,ADO.NET已经为我们提供这样的连接池管理,每个连接字

SpringBoot整合Druid数据连接池

SpringBoot整合Druid数据连接池 Druid是什么? Druid是Alibaba开源的的数据库连接池.Druid能够提供强大的监控和扩展功能. 在哪里下载druid maven中央仓库: http://central.maven.org/maven2/com/alibaba/druid/ 怎么获取Druid的源码 Druid是一个开源项目,源码托管在github上,源代码仓库地址是 https://github.com/alibaba/druid.同时每次Druid发布正式版本和快照