当前位置: 首页 > news >正文

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

一、数据库连接池

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. 获取数据库连接 ConnectionConnection connection = dataSource.getConnection();System.out.println(connection); //获取到了连接后就可以继续做其他操作了
​//System.out.println(System.getProperty("user.dir"));}
}

注意:

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

http://www.lryc.cn/news/102713.html

相关文章:

  • 设计模式-单例模式
  • golang mysql
  • uniapp使用echarts
  • Python命令模式介绍、使用
  • #typescript 使用file-saver模块#
  • 移动端适配布局rem和vw
  • 【Java基础教程】(四十八)集合体系篇 · 上:全面解析 Collection、List、Set常用子接口及集合元素迭代遍历方式~【文末送书】
  • 什么是 DNS ANAME 解析?
  • Neo4j 集群和负载均衡
  • go web框架 gin-gonic源码解读01————Engine
  • windows版docker部署springcloud项目
  • 探索工程机械远程控制新纪元:Intewell-Hyper II震撼发布!
  • DM8 DSC集群实时主备搭建
  • 配置IPv4 over IPv6隧道示例
  • 在中国区部署日志通2.0
  • centos下安装jdk
  • 【HDFS】LocatedBlocks、LocatedBlock、LocatedStripedBlock、ExtendedBlock类分析
  • Oracle 19c 报ORA-704 ORA-01555故障处理---惜分飞
  • D356周赛复盘:滑动窗口+三元问题思路
  • ETHERNET/IP 转ETHERCAT连接倍福和欧姆龙PLC的配置方法
  • Git分布式版本控制工具和GitHub(一)--简介
  • 【Terraform学习】Terraform-AWS部署快速入门(快速入门)
  • 力扣75——深度优先搜索
  • 【C++初阶】C++基础(上)——C++关键字、命名空间、C++输入输出、缺省参数、函数重载
  • 代码随想录训练营Day55动态规划part15|392.判断子序列|115.不同的子序列
  • Linux下安装RabbitMQ教程
  • 如何加强Mysql安全,请给出可行的具体措施
  • 创造自己的宠物医院预约服务小程序,步骤详解
  • MACOM EDI 需求分析
  • 使用Spring Boot AOP实现日志记录