Java课题笔记~数据库连接池

news2024/9/20 22:34:05

一、数据库连接池

1.1 数据库连接池简介

  • 数据库连接池是个容器,负责分配、管理数据库连接(Connection)

  • 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;

  • 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏

  • 好处

    • 资源重用

    • 提升系统响应速度

    • 避免数据库连接遗漏

之前我们代码中使用连接是每次使用都创建一个Connection对象,使用完毕就会将其销毁。这样重复创建销毁的过程是特别耗费计算机的性能的及消耗时间的。

而数据库使用了数据库连接池后,就能达到Connection对象的复用,如下图

 

连接池是在一开始就创建好了一些连接(Connection)对象存储起来。用户需要连接数据库时,不需要自己创建连接,而只需要从连接池中获取一个连接进行使用,使用完毕后再将连接对象归还给连接池;这样就可以起到资源重用,也节省了频繁创建连接销毁连接所花费的时间,从而提升了系统响应的速度。

1.2 数据库连接池实现

  • 标准接口:==DataSource==

    官方(SUN) 提供的数据库连接池标准接口,由第三方组织实现此接口。该接口提供了获取连接的功能:

    Connection getConnection()

    那么以后就不需要通过 DriverManager 对象获取 Connection 对象,而是通过连接池(DataSource)获取 Connection 对象。

  • 常见的数据库连接池

    • DBCP

    • C3P0

    • Druid

    我们现在使用更多的是Druid,它的性能比其他两个会好一些。

  • Druid(德鲁伊)

    • Druid连接池是阿里巴巴开源的数据库连接池项目

    • 功能强大,性能优秀,是Java语言最好的数据库连接池之一

1.3 Driud使用

方式一:

  1. 导入jar包(mysql-connection-java.jar,druid.jar),同时加入到类加载路径中

  2. 直接创建连接池对象:new对象 DruidDataSource

  3. 然后设置属性。

    1. setDriverClassName()

    2. setUrl()

    3. setUsername()

    4. setPassword()

    5. setInitialSize()

    6. setMaxSize()

    7. setMaxWait()

  4. 通过连接池对象,获取数据库连接

方式二:

  • 导入jar包 mysql-connection-java.jar、druid-1.1.12.jar

  • 定义配置文件

  • 加载配置文件

  • 获取数据库连接池对象

  • 获取连接

现在通过代码实现,首先需要先将druid的jar包放到项目下的lib下并添加为库文件

 

项目结构如下:

 

编写配置文件如下:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///ssm?useSSL=false&useServerPrepStmts=true
username=root
password=root
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000

使用druid的代码如下:

/**
 * Druid数据库连接池演示
 */
public class DruidDemo {
​
    public static void main(String[] args) throws Exception {
        //1.导入jar包
        //2.定义配置文件
        //3. 加载配置文件
        Properties prop = new Properties();
        prop.load(new FileInputStream("jdbc-demo/src/druid.properties"));
        //获取工作目录
        //System.out.println(System.getProperty("user.dir"));
        
        
        //采用类加载方式获取文件的内容,并封装成流
        //InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("druid.properties");
        //4. 获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
​
        //5. 获取数据库连接 Connection
        Connection connection = dataSource.getConnection();
        System.out.println(connection); //获取到了连接后就可以继续做其他操作了
​
        //System.out.println(System.getProperty("user.dir"));
    }
}

注意:

System.getProperty("user.dir"),在web项目,返回值就不是项目的根目录了,而是tomcat的bin目录。

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

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

相关文章

前端Vue入门-day05-自定义指令、插槽、路由入门

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 自定义指令 基本语法 (全局&局部注册) 全局注册 局部注册 指令的值 v-loading 指令封装 插槽 …

电子贺卡蓝牙芯片,支U盘/SD卡音频播放蓝牙IC,WT2605-32N-L009

喜庆的时刻,向亲朋好友送上一份特别的祝福,是传递情谊、增进感情的最佳方式。然而,传统贺卡的简单文字和图片已经无法满足我们对个性化、创意化的需求。现在,深圳唯创知音,带来了一款颠覆传统贺卡的全新蓝牙BLE方案——…

使用Windbg分析从系统应用程序日志中找到的系统自动生成的dump文件去排查问题

目录 1、尝试将Windbg附加到目标进程上进行动态调试,但Windbg并没有捕获到 2、在系统应用程序日志中找到了系统在程序发生异常时自动生成的dump文件 2.1、查看应用程序日志的入口 2.2、在应用程序日志中找到系统自动生成的dump文件 3、使用Windbg静态分析dump文…

ardupilot 如何安装intelhex模块

目录 文章目录 目录摘要1.下载资源1.下载需要的软件2.编译带bt的固件摘要 本节主要记录ardupilot如何安装intelhex模块,实现编译ardupilot的bootloader文件并生成bootloader文件和固件合并的.hex文件。 1.下载资源 1.下载需要的软件 下载网址 intelhex-2.3.0.tar.gz 下载…

笔记本触摸板没反应怎么办?只需要4个方法!快速解决!

“大家知道为什么笔记本触摸板没反应吗?我的鼠标不见了现在触摸板也没反应,根本就用不了电脑了,有什么方法可以解决吗?” 触摸板是笔记本电脑上最重要的输入设备之一,它可以提供便捷的操作方式。对于很多朋友来说&…

SQL 执行计划管理(SPM)

一、SPM 需求背景 任何数据库应用程序的性能在很大程度上都依赖于查询执行,尽管优化器无需用户干预就可以评估最佳计划,但是 SQL 语句的执行计划仍可能由于以下多种原因发生意外更改:版本升级、重新收集优化器统计信息、改变优化器参数或模式…

Golang之路---01 Golang VS Code创建项目

Golang VS Code创建项目 代码组织 Golang使用包和模块来组织代码,包对应到文件系统就是文件夹,模块就是xxx.go的go源文件。一个包中会有多个模块,或者多个子包。 早期使用的是gopath来管理项目,不方便,比较麻烦&…

QWidget窗口类

QWidget窗口类 设置父对象窗口位置窗口尺寸窗口标题和图标信号槽函数例子1例子3例子3 设置父对象 // 构造函数 QWidget::QWidget(QWidget *parent nullptr, Qt::WindowFlags f Qt::WindowFlags());// 公共成员函数 // 给当前窗口设置父对象 void QWidget::setParent(QWidget…

中药配方煎药-亿发智能中药汤剂煎煮系统,智慧中药房的数字化升级

随着中药的普及,在治病、养生等方面都发挥这积极作用,但中药煎煮过程繁琐,如果有所差错将会影响药品的药性。为了满足当今用户对中药的需求,增强生产效率和业务水平,亿发中药煎配智能管理系统应运而生,为用…

线程同步问题——锁

文章目录 线程同步互斥锁(互斥量)相关操作函数应用 死锁读写锁相关操作函数 线程同步 临界区——代码 临界数据——共享数据 原子操作:不可以被其他操作打断 必须的,用以保证数据的安全性 实现线程同步的方式: 互斥量…

第十四章、【Linux】磁盘配额与进阶文件系统管理

14.1 磁盘配额 (Quota) 的应用与实作 14.1.1 什么是 Quota 在 Linux 系统中,由于是多用户多任务的环境,所以会有多人共同使用一个硬盘空间的情况发生, 如果其中有少数几个使用者大量的占掉了硬盘空间的话&#xff0c…

数字人会成为文旅行业的新增量吗?写实数字人定制包含哪些技术?

近年来,各大文旅机构均在围绕数字人展开了文旅营销创作,凭借着写实数字人定制技术,将数字人的人设、功能以及才艺得到创新,并由此在文旅形态上展开了诸多尝试。 比如会唱山歌多才多艺的数字人刘三姐,使用多种语言推介…

【Docker】Docker的工具实践及root概念和Docker容器安全性设置的详细讲解

前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介:热…

css滤镜:drop-shadow

一、用法 drop-shadow( offset-x offset-y blur-radius spread-radius color ) offset-x:此参数设置图像的水平偏移。正值将创建右侧的偏移量,负值将创建左侧的偏移量。offset-y:此参数设置图像的垂直偏移。正值创建到底部的偏移量&#xff…

公众号套图制作教你打造独特商品宣传海报风格

在公众号的运营中,一个精美的海报设计可以吸引更多的关注和转发,提升文章的曝光度和传播效果。然而,对于没有设计经验的人来说,制作一个令人惊艳的海报可能是一项挑战。但是,现在有了乔拓云这个强大的工具,…

光伏、储能一体化监控及运维解决方案

前言 今年以来,在政策利好推动下光伏、风力发电、电化学储能及抽水蓄能等新能源行业发展迅速,装机容量均大幅度增长,新能源发电已经成为新型电力系统重要的组成部分,同时这也导致新型电力系统比传统的电力系统更为复杂&#xff0…

Mybatis ,Mybatis-plus列表多字段排序,包含sql以及warpper

根据 mybatis 根据多字段排序已经wrapper 根据多字段排序 首先根据咱们返回前端的数据列来规划好排序字段 如下: 这里的字段为返回VO的字段,要转换成数据库字段然后加入到排序中 示例,穿了 surname,cerRank 多字段,然后是倒序 false 首先创建好映射&am…

kotlin 编写一个简单的天气预报app(五)增加forcast接口并显示

参考资料 OpenWeatherMap提供了一个/forecast接口,用于获取未来几天的天气预报。你可以使用HTTP GET请求访问该接口,并根据你所在的城市或地理坐标获取相应的天气数据。 以下是一个示例请求的URL和一些常用的参数: URL: http://api.openwe…

AWS——01篇(AWS入门 以及 AWS之EC2实例及简单实用)

AWS——01篇(AWS入门 以及 AWS之EC2实例及简单实用) 1. 前言2. 创建AWS账户3. EC23.1 启动 EC2 新实例3.1.1 入口3.1.2 设置名称 选择服务3.1.3 创建密钥对3.1.4 网络设置——安全组3.1.4.1 初始设置3.1.4.2 添加安全组规则(开放新端口&…

用Javascript和表情符号制作URL动画

您可以在URL中使用表情符号(和其他图形unicode字符)。哇,太棒了。但似乎没有人去做。为什么?或许表情符号对普通网络平台来说太陌生了?又或许是怕触怒SEO大神而避之不及? 不管是什么原因,维恩图上“有可能没有人做”的…