• Druid 数据库连接池 详解


    推荐阅读:JDBC详解

    概述

    1.数据库连接池是个容器,负责分配、管理数据库连接(Connection);
    2.它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;
    3.释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏;

    可以类比线程池去理解。

    优点
    1.资源重用
    2.提升系统响应速度
    3.避免数据库连接遗漏

    在这里插入图片描述

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

    常见的数据库连接池: DBCP、C3P0、Druid
    我们现在使用更多的是Druid,它的性能比其他两个会好一些。

    Druid连接池是阿里巴巴开源的数据库连接池项目,功能强大,性能优秀,是Java语言最好的数据库连接池之一。

    数据库连接池实现

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

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

    Driud使用流程

    1.导入jar包 druid-1.1.12.jar
    2.定义配置文件 druid.properties
    3.加载配置文件
    4.获取数据库连接池对象
    5.获取连接

    在这里插入图片描述

    代码示例

    配置文件
    druid.properties

    driverClassName=com.mysql.jdbc.Driver
    url=jdbc:mysql://127.0.0.1:3306/sd?useSSL=false&useServerPrepStmts=true
    username=root
    password=root
    # 初始连接数
    initialSize=5
    # 最大连接数
    maxActive=10
    # 最大等待时间
    maxWait=3000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    Java代码

    public static void main(String[] args) throws Exception {
            //1.导入jar包
            //2.定义配置文件
            //3. 加载配置文件
            Properties prop=new Properties();
            prop.load(new FileInputStream("C:\\Users\\斯文\\Desktop\\Java\\demo\\index\\src\\druid.properties"));
    
            //4. 获取连接池对象
            DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);
    
            //5. 获取数据库连接 Connection
            Connection conn=dataSource.getConnection();
    
            //6.操作数据库
            String sql = "select * from st";
            Statement stmt=conn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                System.out.println(id + " " + name + "    " + age);
            }
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    推荐阅读:JDBC详解

  • 相关阅读:
    变电站指针式仪表示数识别方法研究
    记账APP:小哈记账5——记账首页页面的制作(2)
    pip 安装第三方库
    剑指offer-字符串总结
    基于opencv的手指静脉识别(附源码)
    微前端是模块化后的最终选择
    selenium 实现自动登录功能【Use 缓存】
    【ROS】初识ROS
    如何搭建一款BI系统
    通过通达信l2行情接口的逐笔委托中挖掘主力踪迹
  • 原文地址:https://blog.csdn.net/weixin_52341477/article/details/125614328