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/168820.html原文链接:https://javaforall.net

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


相关推荐

  • 80c51流水灯程序汇编语言,stc89c51单片机流水灯程序.doc

    80c51流水灯程序汇编语言,stc89c51单片机流水灯程序.doc..51单片机流水灯程序程序一(用C语言编的最基础的程序)#include#includesbitD0=P1^0;//位定义,把P1口的第一个管脚定义为D0sbitD1=P1^1;//位定义,把P1口的第二个管脚定义为D1sbitD2=P1^2;//位定义,把P1口的第3个管脚定义为D2sbitD3=P1^3;//位定义,把P1口的第4个管脚定义为D3sbitD4=P1^4;//…

    2022年5月1日
    48
  • 电脑表格制作步骤word_php入门案例

    电脑表格制作步骤word_php入门案例OFFICE办公软件零基础入门系列教程【WORD第四节】这是一个新开的一个系列教程,适合零基础的小白学习使用OFFICE办公软件。本教程以解决在使用OFFICE办公软件实用的问题为引导,从最基础的使用知识一点点的深入,最后到熟练使用OFFICE办公软件。本教程会分为三个专题,【WORD篇】【EXCE篇】【PPT篇】。表格是Word文档中一个比较重要的存在,有很多的不太会使用,下面我们就详细讲解…

    2022年8月29日
    2
  • pycharm安装教程(非常详细)_扶梯安装步骤

    pycharm安装教程(非常详细)_扶梯安装步骤Pycharm安装+Anconda环境配置,需要下载软件的请访问​​​​​​(75条消息)Python软件.zip(pycharm安装包Anconda安装包)-Python文档类资源-CSDN文库(免费下载免费下载免费下载免费下载免费下载免费下载),没有安装Ancondade小伙伴可以访问Anconda安装(超详细)写文章-CSDN博客https://mp.csdn.net/mp_blog/creation/editor/120982868…

    2022年8月26日
    5
  • 基于Bootstrap的Metro风格模板

    基于Bootstrap的Metro风格模板这几天在看Bootstrap的一些书,这里整理一下书中的一些模板,方便以后使用。1.BootMetrohttp://www.guoxiaoming.com/bootmetro/2.Bootswatchhttp://bootswatch.com/3.MetroUICSS官网:http://metroui.org.ua/中文:http://www.bootcss.com/

    2025年7月3日
    2
  • qcustomplot 性能_cpu性能提升工具

    qcustomplot 性能_cpu性能提升工具Plot性能提升QCustomPlot采用了大量的技术比如自适应采样和文本对象缓存为了减少replot的时间。然而一些特性比如半透明的填充,反锯齿和粗线条都可能导致低效率。如果你在你的程序中注意到了这些。这有一些提示关于如何跳高Replot的性能。大部分时间耗费在绘图函数上尤其是绘制高密度的图形和其他图。为了最大性能思考下面几点:使用Qt4.8.0及以上的版本,性能将会有双倍或

    2022年9月20日
    2
  • ajax使用案例

    ajax使用案例1、初步了解这里可以修改网络快和慢。限网,流量式的,做模拟的。network->all代表加载的所有事件后面的那个显示有/,这个是首路由。后面有很多svg和js等文件想要这个服务器的地址

    2022年7月2日
    23

发表回复

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

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