第8章 数据库连接池

news2024/11/18 11:39:07

*数据库连接池的基本思想:为数据库建立一个缓冲池,预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需要从缓冲池中取出一个,使用完毕后再放回

*数据库连接池负责分配、管理和释放数据库连接,它语序应用程序重复使用一个现有的数据库连接,而不是重新建立一个。

1.C3P0数据库连接池

*导入jar包

*进入c3p0doc文档,查询配置方法

 *在src下创建c3p0-config.xml

<c3p0-config>
    <named-config name="helloC3P0">
        <!-- 提供获取连接的4个基本信息 -->
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/test?serverTimezone=UTC&amp;useSSL=false</property>
        <property name="user">root</property>
        <property name="password">123456</property>
        <!--进行数据库连接池管理的基本信息-->
        <property name="acquireIncrement">5</property><!--当数据库连接池中的连接数不够时,c3p0一次向向服务器申请的连接数-->
        <property name="initialPoolSize">10</property><!--c3p0初始化时的连接数-->
        <property name="minPoolSize">10</property><!--c3p0数据库连接池中维护最少的连接数-->
        <property name="maxPoolSize">100</property><!--c3p0数据库连接池中维护最多的连接数-->
        <property name="maxStatements">50</property><!--c3p0数据库连接池中维护的最多的Statement的个数-->
        <property name="maxStatementsPerConnection">5</property><!--c3p0数据库连接池中每个连接可以最多使用Statement的个数-->

    </named-config>
</c3p0-config>

*使用c3p0数据库连接池获取连接

    public void testGetConnection2() throws SQLException {
        ComboPooledDataSource cpds = new ComboPooledDataSource("helloC3P0");
        Connection conn = cpds.getConnection();
        System.out.println(conn);
    }

2.DBCP数据库连接池

*导入jar包

*在src下创建dbcp.properties配置文件

driverClassNmae=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://@localhost:3306/test?serverTimezone=UTC&useSSL=false
username=root
password=168465

 *使用DBCP数据库连接池获取连接

public void testGetConnection2() throws Exception {
        Properties pros=new Properties();
        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("dbcp.properties");
        pros.load(is);
        DataSource source = BasicDataSourceFactory.createDataSource(pros);
        Connection conn = source.getConnection();
        System.out.println(conn);
    }

3.Druid数据库连接池

*导入jar包

*在src下创建druid.properties配置文件

username=root
password=321684635
url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true
driverClassName=com.mysql.cj.jdbc.Driver

 *使用Druid数据库连接池获取连接

 public void getConnection() throws Exception {
        Properties pros = new Properties();
        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("druid.properties");
        pros.load(is);
        DataSource source = DruidDataSourceFactory.createDataSource(pros);
        Connection conn = source.getConnection();
        System.out.println(conn);
    }

*使用Druid的JDBCUtiles

    private static DataSource source;
    static {
        try {
            Properties pros=new Properties();
            InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("druid.properties");
            pros.load(is);
            source= DruidDataSourceFactory.createDataSource(pros);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static Connection getConnection() throws SQLException {
        return source.getConnection();
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 变量和数据类型

Java 变量和数据类型Java 变量Java变量概念变量使用的基本步骤案例&#xff1a;输出人的信息&#xff08;年龄&#xff0c;成绩&#xff0c;性别&#xff0c;姓名&#xff09;变量使用注意事项案例&#xff1a;变量使用注意事项程序中 号的使用案例数据类型整数类型基本介绍案…

Spring Bean的生命周期源码解析

文章目录前言零、Bean生命周期流程图一、加载类二、实例化前2.1、使用案例2.2、源码---InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation()三、实例化3.1、Supplier创建对象3.2、工厂方法创建对象3.3、推断构造方法3.4、源码四、BeanDefinition的后置处理4…

在Ubuntu下安装地球物理学专业软件madagascar

1.下载安装文件 git clone https://github.com/ahay/src RSFSRC这一步搞好后会在当前路径下生成RSFSRC 文件夹 2.预安装 安装依赖软件 sudo apt-get install libxaw7-dev freeglut3-dev libnetpbm10-dev libgd-dev \ libplplot-dev libavcodec-dev libcairo2-dev libjpeg-d…

(设计模式)工厂模式

工厂模式 工厂模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 在工厂模式中&#xff0c;我们在创建对象时不会对客户端暴露创建逻辑&#xff0c;并且是通过使用…

【C++】C++基础知识(五)---数组

C基础知识&#xff08;五&#xff09;1. 一维数组1.1 定义方式1.2 数组名用途1.3 案例分析2. 二维数组2.1 定义方式2.2 数组名用途2.3 案例分析3. 多维数组1. 一维数组 数组就是一个集合&#xff0c;里面存放了相同类型的数据元素。 特点&#xff1a; 1、数组中每个元素的数据…

探究并发和并行、同步和异步、进程和线程、阻塞和非阻塞、响应和吞吐等

一. 并发和并行 操作系统扫盲&#xff1a; 1. 对于单核cpu而言(不管单核单线程也好&#xff0c;单核多线程也罢)&#xff0c;同一时间只能干一件事&#xff01;&#xff01;为了看起像可以“同时干多件事”&#xff0c;windows操作系统把cpu的时间划分为长短基本相同的时间区间…

Golang入门笔记(3)—— 运算符

本来这块代码&#xff0c;作为有了一点语言基础的人是真不想写的&#xff0c;因为和其他语言没有什么不同的地方&#xff0c;但是就怕 真的还有人看我的帖子&#xff0c;还真怕真的有初学者在看我帖子&#xff0c;所以还是贴心的抄了一遍。 和Java不同的地方 1. &变量取地址…

【Spring】一文带你吃透基于XML的DI技术

个人主页&#xff1a; 几分醉意的CSDN博客_传送门 文章目录&#x1f496;基于XML的DI✨set注入&#x1f4ab;基本语法&#x1f4ab;和属性名无关&#x1f4ab;给非自定义类属性赋值&#x1f4ab;引用类型注入✨构造注入&#x1f4ab;name属性&#x1f4ab;index属性✨引用类型的…

哈希表(hash_table)的原理

一、hash_table的介绍 hash_table可提供对任何键值对的存取和删除操作。由于操作对象是键值对&#xff0c;所以hash table也可被视为一种字典结构(dictionary)。这种结构的用意在于提供常数时间的基本操作&#xff0c;就像stack或queue那样。乍听之下这几乎是不可能的任务&…

SpringBoot中使用Redis实现分布式锁

文章目录一。Redis实现分布式锁原理二。代码实现Redis分布式锁一。Redis实现分布式锁原理 以下内容为转载部分&#xff0c;主要介绍Redis实现分布式锁的背景&#xff1a; 转载博客&#xff1a;https://blog.csdn.net/fuzhongmin05/article/details/119251590 为什么需要分布式…

[附源码]计算机毕业设计JAVA高校创新创业项目管理系统

[附源码]计算机毕业设计JAVA高校创新创业项目管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM…

数字化转型重塑企业竞争优势,SaaS电商系统助力锂电池行业实现降本增效

作为我国核心基础工业的关键材料之一&#xff0c;锂电池在汽车、医疗器械、航天航空、消费类电子产品等领域均可发挥重要作用。近年来&#xff0c;随着新能源汽车的快速发展有力带动了锂电池行业的市场需求&#xff0c;锂电池已成为化学电源应用领域中最具竞争力的电池&#xf…

Vue | Vue.js 实现过渡动画

&#x1f5a5;️ Vue .js专栏&#xff1a;Vue .js 实现过渡动画 &#x1f9d1;‍&#x1f4bc; 个人简介&#xff1a;一个不甘平庸的平凡人&#x1f36c; ✨ 个人主页&#xff1a;CoderHing的个人主页 &#x1f340; 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ &#x1f44…

基于51单片机的智能路灯控制系统proteus仿真原理图PCB

功能&#xff1a; 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前时间/环境光强/工作模式 2.支持路灯故障检测 3.工作时间内(17~24时)&#xff0c;两个路灯同时点亮&#xff0c;24时以后&#xff0c;B路灯关闭&#xff0c;若检测到由物体通过&#xff0c;路灯B点亮…

R17 redcap

微信同步更新欢迎关注同名modem协议笔记 在5G时代&#xff0c;某些场景的终端并不需要特别复杂&#xff0c;只要满足成本低&#xff0c;功耗小&#xff0c;尺寸小等要求即可&#xff0c;例如视频监控&#xff0c;可穿戴设备&#xff0c;工业无线传感器等&#xff0c;redcap就是…

electron vue 模仿qq登录界面

1、使用vuecli创建vue项目 我用的vue2 vue create qq_test2、安装electron npm install electron -g //or npm install electron12.0.11 //老版本3、vue项目安装Electron-builder打包工具 版本我选择的是12 vue add electron-builder4、在vue项目的src下有个background.…

收藏|多指标时序预测方式及时序特征工程总结

背景 现如今&#xff0c;随着企业业务系统越来越复杂&#xff0c;单指标时间序列预测已不能满足大部分企业需求。在复杂的系统内&#xff0c;如果采用单一的指标进行时间序列预测&#xff0c;由于各个指标相互作用的关系&#xff0c;因此会因为漏掉部分指标因素导致出现预测精…

进程间的通信 - 剪切板

剪切板是系统维护管理的一块内存区域&#xff0c;本机的所有进程都可以访问。当一个进程复制数据时&#xff0c;先将数据放在该内存区&#xff0c;当另一个进程粘贴时&#xff0c;则是从该内存区块取出数据 剪切板操作&#xff1a; 其实在剪切板中也就那几个API在使用&#x…

tf模型落地安卓之旧事重提

之前将tf模型落地安卓了&#xff0c;其实就是clone一下官方的代码&#xff0c;然后配置下环境就打包了&#xff0c;没啥技术含量&#xff0c;现在再看&#xff0c;问题就在环境配置了。 1&#xff0c;Unable to start the daemon process. Q Group 277356808 The project use…

西安某1000M3浮顶油罐设计(成品油库1000m³油罐设计与制造工艺)

目 录 1 浮顶油罐及其发展概况 2 2 设计方案 3 2.1 各种设计方法 3 2.2 各种方法优缺点比较 3 2.3 油罐的基础 4 3 罐壁设计 5 3.1 罐壁的强度计算 5 3.2 浮顶油罐的风力稳定计算 6 3.3 浮顶油罐的抗震计算 9 3.4 罐壁结构 14 4 罐底设计 18 4.1 罐底结构设计 18 4.2 罐底的应…