jdbc和数据库连接池_数据库连接池满了

jdbc和数据库连接池_数据库连接池满了数据库连接池JDBC数据库连接池的必要性在使用开发基于数据库的web程序时,传统的模式基本是按照以下步骤:在主程序(如servlet beans)中建立数据库连接进行sql操作断开数据库连接这种模式开发,存在的问题:普通的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,再验证用户名和密码(大概花费0.05s-1s),需要数据库连接的时候,就向数据库要求一个,执行完成后再断开。这样的方式将会消耗大量的时间。数据库的

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

数据库连接池


JDBC数据库连接池的必要性
在使用开发基于数据库的web程序时,传统的模式基本是按照以下步骤:

  1. 在主程序(如servlet beans)中建立数据库连接
  2. 进行sql操作
  3. 断开数据库连接

这种模式开发,存在的问题:

  • 普通的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,再验证用户名和密码(大概花费0.05s-1s),需要数据库连接的时候,就向数据库要求一个,执行完成后再断开。这样的方式将会消耗大量的时间。数据库的连接资源并没有得到很好地利用。
  • 对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄露,最终将导致重启数据库。
  • 这种开发不能控制被创建的连接对象数,系统资源会被毫不顾忌的分配出去,如连接过多,也可能导致内存泄露,服务器崩溃。

数据库 连接池技术
基本思想:为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕后再放回去。
数据库连接池负责分配,管理和释放数据库连接。它允许应用程序使用一个现有的数据库连接,而不是重新建立一个。

JDBC的数据库连接池使用DataSource来表示,DataSource只是一个接口。该接口通常由服务器提供实现,也有一些开源组织提供实现。

数据库连接池的优点
在这里插入图片描述


DBCP C3P0 Druid是主要的三个数据库连接池技术


c3p0

package com.atguigu4.connection;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mchange.v2.c3p0.DataSources;
import org.junit.Test;

import java.sql.Connection;

public class C3P0Test { 
   
    @Test
    public void testGetConnection() throws Exception{ 
   
        //获取c3p0数据库连接池
        ComboPooledDataSource cpds = new ComboPooledDataSource();
        cpds.setDriverClass("com.mysql.jdbc.Driver");
        cpds.setJdbcUrl("jdbc:mysql://localhost:3306/test");
        cpds.setUser("root");
        cpds.setPassword("924930871111");
        //设置初始时数据库连接池中的连接数
        cpds.setInitialPoolSize(10);

        Connection connection = cpds.getConnection();
        System.out.println(connection);
        //销毁c3p0连接池
        DataSources.destroy(cpds);
    }
}

配置文件


    <!-- 配置c3p0的基本信息 -->
    <named-config name="helloc3p0">
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</property>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="user">root</property>
        <property name="password">123</property>
        <!--当数据库连接池中的连接数不够时,c3p0一次性向数据库服务器申请的连接数-->
        <property name="acquireIncrement">3</property>
        <!--c3p0初始化时的连接数-->
        <property name="initialPoolSize">10</property>
        <property name="minPoolSize">2</property>
        <property name="maxPoolSize">10</property>
        <!--连接池最多维护的Statement个数-->
        <property name="maxStatements">50</property>
        <!--每个连接中最多可以使用的Statement的个数-->
        <property name="maxStatementsPerConnection">2</property>
    </named-config>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168939.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Win10黑屏的时候显示时钟怎么设置「建议收藏」

    Win10黑屏的时候显示时钟怎么设置「建议收藏」Win10黑屏的时候显示时钟怎么设置?其实方法很简单,那就是让电脑进入屏幕保护程序的黑屏模式而不是睡眠状态,这样电脑就可以显示时间啦

    2022年9月29日
    3
  • AngularJS指令「建议收藏」

    AngularJS指令「建议收藏」AngularJS指令AngularJS通过被称为指令的新属性来扩展HTML。AngularJS通过内置的指令来为应用添加功能。AngularJS允许你自定义指令。小栗子:

    在输入框中尝试输入:

    姓名:

    2022年7月25日
    14
  • java 上传文件接口_Java接口实现文件上传

    java 上传文件接口_Java接口实现文件上传因工作需要,在后台管理页面加入一个上传文件的模块,虽然接口的代码很简单,但实现期间遇到了一些比较有趣的坑,特记录下来。需求实现文件上传,并提供一个可供下载的路径。想法文件上传代码暂且不谈,先说说文件放在服务器什么位置比较合适。我首先想到的是两个地方:tomcat的webapps/ROOT目录下,如果放在这个目录下,数量少了还好,一旦数量多了,必定会影响tomcat本身的运行速度。这个虽然可用但不可…

    2022年5月14日
    43
  • 一阶惯性滤波特点_传递函数的固有频率怎么求

    一阶惯性滤波特点_传递函数的固有频率怎么求文章(一)一阶惯性环节采用后置反馈的方式可以实现较精确的系统跟踪性能。上述系统的传递函数为因此启动性能良好,另,一阶惯性环节无超调量,因此可通过修改反馈参数实现最优的跟踪性能。因此在针对温度等变化较小的物理量方面的控制上是较占优势的,但精确跟踪也就意味着出现高频干扰、低频干扰、白噪声时,传感器也会精确地将这些干扰输出。这对一些容易受到干扰的系统是极为不利的。如下图为加入高频正弦信号后上述系统的输出(幅值为1,频率为1000(rad/sec))可见,系统虽然有一定的滤.

    2022年10月5日
    2
  • 【转】RadControls for Silverlight(学习1-GridView)

    【转】RadControls for Silverlight(学习1-GridView)引用:Telerik(官网:http://www.telerik.com/)是保加利亚的一个软件公司,专注于微软.Net平台的表示层与内容管理控件。我们提供高度稳定性和丰富性能的组件产品,并可应用在非常严格的环境中。现在拥有Microsoft,HP,Alcoa,BP,HarperCollins,Siemens,T-Mobile,HJHeinz和一些最主要的教育机构和很多政府机…

    2022年7月24日
    9
  • 获取activexobject对象失败_js获取对象

    获取activexobject对象失败_js获取对象js

    2022年10月14日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号