首页 > 数据库 >JDBC学习记录3-数据库连接池

JDBC学习记录3-数据库连接池

时间:2024-07-10 11:29:43浏览次数:13  
标签:JDBC 配置文件 数据库 druid 连接 Properties 连接池

JDBC学习记录3-数据库连接池

以此记录自己的学习过程
JDBC全称:Java DataBase Connectivity

JDBC学习的是使用Java语言来操作关系型数据库的一套API。
2024年7月10日11:13:04
简单了解

JDBC学习记录1-入门-CSDN博客
JDBC学习记录2-API详解-CSDN博客

四、数据库连接池和Druid数据源

​ 从名字我们就可以初步猜测数据库连接池可以类比线程池,实际也确实如此,数据库连接池是一个用于管理数据库连接的容器,负责分配、管理数据库连接*(Connection)*。在数据库初始化之前创建一个容器用于存放数据库连接。

image-20240710013939485

​ 使用数据库连接池的好处有:

  • 实现资源的重用
  • 提升系统响应速度
  • 避免数据库连接遗漏

​ 数据库连接池允许应用程序重复使用一个现有的数据库连接,同时连接池会释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。

数据库连接池的实现

​ 官方也就是Sun公司提供了一个数据库连接池标准接口DataSource,由各个第三方组织来实现此接口,功能就是获取连接。所以以后我们不再需要通过驱动类DriverManager来获取数据库连接了,而是使用上面的这个标准接口。

Connection getConnection()

常见的数据库连接池有DBCP、C3P0、Druid.

Druid连接池介绍 · alibaba/druid Wiki (github.com)

Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。是目前Java语言最好的数据库连接池之一。

Driud使用步骤及简单示例
1.导入jar包

在之前两个blog写好的项目的基础上继续实践。

还是使用之前的MVN RepositoryMaven Repository: com.alibaba » druid (mvnrepository.com)下载所需jar包,这里跟着教程下载的是1.1.12版本,按照之前的方法导入jar包,并添加为库(可以参考JDBC学习记录1-入门中导入mysql的jar包的过程)。

接下来创建一个新类DruidDemo,这里放在一个新的包com.niko.druid下。

image-20240710101140920

2.定义配置文件

src根目录下创建一个配置文件druid.properties,内容如下

配置文件的好处在于可以避免 硬编码,使代码具有较高的复用性,有修改需求的时候也比较方便。简单了解了一下,大致语法是 “键=值” 的形式,(像下面的配置文件一般键名是固定的,键值由自己指定),注释使用# 号。

这让我回想起了my.ini,也是一样的语法,它们都是配置文件。

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/db?useSSL=false&useServerPrepStmts=true
username=root
password=Aa@123456789
# 初始化连接数据(容器初始大小)
initialSize=5
# 最大连接数(容器上限大小)
maxActive=10
# 最大等待时间
maxWait=3000

至此配置文件创建成功。

3. 加载配置文件

开始编写新类里的代码。

先定义一个Properties对象用于读取配置文件,它可以读取包括XML、Properties在内的符合key=value格式的配置文件.

接着我们已经编写好了Properties配置文件,接着需要调用Properties对象的方法load来加载配置文件。

相关知识参考了Java读写配置文件——Properties类的简要使用笔记-CSDN博客

img

关键代码:

Properties prop = new Properties();
prop.load(new FileInputStream("D:\\JavaLearning\\JavaLesson\\Demo\\Demo3_jdbc\\jdbc-demo\\src\\druid.properties"));

完整代码:

package com.niko.druid;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.util.Properties;

/*
* Druid数据库连接池实践
* */
public class DruidDemo {
    public static void main(String[] args) throws Exception {
        //1.导入jar包(已完成)
        //2.定义配置文件(已完成)

        //3.加载配置文件(根据具体需求确定)
        Properties prop = new Properties();
        prop.load(new FileInputStream("D:\\JavaLearning\\JavaLesson\\Demo\\Demo3_jdbc\\jdbc-demo\\src\\druid.properties"));
	   //这个语句是为了方便确认第三步里的文件路径的,但是实际尝试使用相对路径没有成功,干脆使用了绝对路径
        //System.out.println(System.getProperty("user.dir"))
      
}

新学的快捷键 Alt+Shift+上下方向键来移动光标处的一整行代码

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

接着上面继续coding

//4.获取连接池对象
DataSource datasource=DruidDataSourceFactory.createDataSource(prop);

敲后面的方法,补前面的对象。

5.获取连接
//5.获取数据库连接
Connection connection = datasource.getConnection(); System.out.println(connection);

//6.执行自己进一步想执行的操作

连接池创建好之后,就可以调用连接池的方法来管理、创建数据库连接了!

image-20240710110136297

标签:JDBC,配置文件,数据库,druid,连接,Properties,连接池
From: https://blog.csdn.net/spy47_/article/details/140318703

相关文章

  • 基于JavaWeb的酒店管理系统(源码+数据库+项目展示文档+部署文档)
    酒店管理系统报告系统概述酒店管理系统是为酒店设计开发的管理平台,旨在提供完善的管理功能以支持酒店的日常运营和管理。该系统基于JavaWeb技术栈开发,使用Servlet和JSP作为主要服务端技术,前端设计采用Layui和jQuery框架,通过美观的Windows风格界面提供用户友好的操作体验。系......
  • MyBatisPlus 实现数据库 CURD 操作
    BaseMapper接口方法介绍BaseMapper中提供了CRUD方法,具体方法如下://插入一条记录intinsert(Tentity);//根据entity条件,删除记录intdelete(@Param(Constants.WRAPPER)Wrapper<T>wrapper);//删除(根据ID批量删除)intdeleteBatchIds(@Param(Constants.COLLEC......
  • MySQL导入数据库报错#1118 - Row size too large ( 8126). 的解决方法
    导入SQL文件时报错(在执行创建表或者增加字段时,发现rowsize长度过长,会导致出现以下错误)[ERR]1118-Rowsizetoolarge(>8126).ChangingsomecolumnstoTEXTorBLOBorusingROW_FORMAT=DYNAMICorROW_FORMAT=COMPRESSEDmayhelp.Incurrentrowformat,BLOBprefix......
  • 20240709(byte数据转换、字典数据选择性保留、选择性查询数据库)
    需要补的知识:​ 1.HTTP协议,url里,那些header、body里都是啥东西报错信息:"服务异常'bytes'objecthasnoattribute'get'"错误原因:​ http传输中,GET方法传入的是byte格式的数据,没有.get方法#假设你有一个包含JSON数据的字节字符串json_bytes=b'{"name":"John",&quo......
  • oracle数据库状态监控
    1、功能介绍  1、检查oracle数据库的运行状态  2、第一次失败后,等待5秒钟再次检查一次2、脚本#!/bin/bashsource/etc/profileexportNLS_LANG=AMERICAN_AMERICA.AL32UTF8w=$(cd$(dirname$0);pwd)#检查数据库的方法fun(){result=$(sqlplus-s${user}/${p......
  • Crontab定时任务更新SOLO以及备份数据库
    Linux定时执行任务Crontab1.安装Crontab1.1安装命令#vixie-cron软件包是cron的主程序yuminstallvixie-cron#crontabs软件包是用来安装、卸装、或列举用来驱动cron守护进程的表格的程序yuminstallcrontabs1.2启动命令#启动服务/sbin/servicecrondstar......
  • 使用Spring Data JPA进行数据库访问
    使用SpringDataJPA进行数据库访问大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!SpringDataJPA是Spring提供的一种数据访问抽象框架,能够极大地简化数据库操作。通过SpringDataJPA,我们可以轻松地实现增删改查等数据库操作,而无需编写大量的样板代......
  • idea springboot 如何支持数据库配置 redis配置 支持不同环境(uat验证环境、测试环境)切
    在SpringBoot中,可以通过配置文件来支持数据库和Redis的配置,并支持不同环境的切换。以下是一些常用的方法:创建配置文件:在src/main/resources目录下创建以下配置文件:application.properties:通用配置文件application-uat.properties:uat验证环境配置文件application-test.prope......
  • python web框架如何处理与数据库的交互
    pythonweb框架如何处理与数据库的交互1.ORM在python中通过关系映射(orm),调用底层dbapi来实现数据库的操作。通过定义类和对象,(类是表,类的对象是数据库的一行数据。)来操作数据库,通过底层的转换,最终形成sql,在相应的数据库中执行。对象关系映射(英语:ObjectRelationMapping,简称O......
  • Java项目:基于SSM框架实现的中小型企业财务管理系统【ssm+B/S架构+源码+数据库+答辩PPT
    一、项目简介本项目是一套基于SSM框架实现的中小型企业财务管理系统包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。项目都经过严格调试,eclipse或者idea确保可以运行!该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值二......