Java 数据库连接池Druid 的介绍

yizhihongxing

下面我将详细讲解“Java 数据库连接池Druid 的介绍”,分为以下几个方面:

  1. Druid 简介
  2. Druid 优势
  3. Druid 的使用
  4. 实例演示

1. Druid 简介

Druid 是阿里巴巴开源的一个高效的数据库连接池框架,其功能全面,性能优异,使用方便。Druid 官方提供了界面功能,可以监控数据库连接和 SQL 调用等信息。

Druid 提供以下功能:

  • 可以监控数据库访问性能,Druid 内置提供了一个功能强大的 StatFilter 插件,能够详细统计 SQL 的执行性能,这对于线上分析数据库访问性能有很大帮助。
  • 内置防御 SQL 注入攻击,使用 Druid 连接池,代码层面就可以防止 SQL 注入攻击。
  • 长时间不使用的连接会被关闭,不会影响后续的数据库操作。
  • 提供了扩展功能,可以自定义拦截、自定义扩展等。

2. Druid 优势

Druid 相对于传统的数据库连接池具有以下优点:

  • 能够监控数据库访问性能,统计 SQL 的执行性能,方便分析数据库的性能瓶颈。
  • 提供了对 SQL 注入攻击的防御功能。
  • 自带的防火墙可以根据 IP 进行黑白名单过滤,安全性更高。
  • 长时间不使用的连接自动关闭,拥有更好的稳定性。
  • 支持可重用的 Prepared Statement 和 CallableStatement,有效避免频繁创建对象和字符串拼接,提高性能。
  • 内部采用增量更新方式管理连接状态,提高了响应效率和资源利用率。

3. Druid 的使用

使用 Druid 连接池的步骤如下:

  1. 将 Druid 对应的 JAR 包添加到项目中,在 Maven 中可通过以下方式添加依赖:
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.3</version>
</dependency>
  1. 在 application.properties 文件中添加如下配置:
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# Druid 配置
# 初始化、最小、最大连接数
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
# 是否长时间不用销毁连接
spring.datasource.druid.pool-prepared-statements=true
# 是否监控 SQL
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=1000
  1. 在代码中通过注入 DruidDataSource 对象获得数据库连接。

4. 实例演示

以下是一个使用 Druid 进行数据库操作的示例:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private DruidDataSource dataSource;

    @Override
    public List<User> selectAllUser() throws SQLException {
        List<User> list = new ArrayList<>();
        Connection connection = dataSource.getConnection();
        String sql = "select * from user";
        PreparedStatement statement = connection.prepareStatement(sql);
        ResultSet resultSet = statement.executeQuery();
        while (resultSet.next()) {
            User user = new User();
            user.setId(resultSet.getInt("id"));
            user.setName(resultSet.getString("name"));
            user.setAge(resultSet.getInt("age"));
            user.setSex(resultSet.getString("sex"));
            user.setCreateTime(resultSet.getDate("create_time"));
            list.add(user);
        }
        resultSet.close();
        statement.close();
        connection.close();
        return list;
    }

}

以上代码通过注入 DruidDataSource 对象获得数据库连接,并通过 PreparedStatement 查询数据表中所有的用户信息。

再举一个应用 Druid 进行 SQL 的监控和统计的示例,需要在 DruidDataSource 中添加如下配置:

spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=1000

然后启动项目,在浏览器中访问 "http://localhost:8080/druid" 即可看到对数据库访问的监控信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 数据库连接池Druid 的介绍 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • JSP forward用法分析实例代码分析

    JSP的forward指令可以实现JSP页面之间的跳转,并且可以把参数传递给下一个JSP页面。下面我们来详细讲解JSP forward用法分析实例代码分析,包含以下几个方面: forward指令的基本语法 JSP的forward指令的基本语法如下: <%@ page language="java" contentType=&quot…

    Java 2023年6月15日
    00
  • java实现Yaml转Json示例详解

    下面是“java实现Yaml转Json示例详解”的完整攻略。 1. 什么是YAML和JSON 在讲如何将YAML转换为JSON之前,我们需要先了解一下YAML和JSON的定义。 YAML YAML(“YAML Ain’t Markup Language”)是一种人类友好的数据序列化标准,与XML、JSON等类似,但更为简洁。它的基本语法结构是采用缩进方式表达…

    Java 2023年5月26日
    00
  • Java后端真实、靠谱、强大的面试题网站:面试梯

    ​  本文分享一个给力的Java后端面试题网站:面试梯。 网址:https://offer.skyofit.com 这套题真实、高频、全面、有详细答案、保你稳过面试,让你成为offer收割机。题目包括:Java基础、多线程、JVM、数据库、Redis、Shiro、Spring、SpringBoot、MyBatis、MQ、ELK、分布式、SpringCloud…

    Java 2023年5月8日
    00
  • Java如何实现长连接

    实现长连接是客户端和服务器端保持连接一段时间,而不是每次请求/响应都建立/关闭一个TCP连接。这样可以减少建立连接的成本,提高性能和效率。 Java 实现长连接可以通过以下三种方式: 1.使用 Java Socket 实现: 在 Java 中可以使用 Socket 编程实现长连接。客户端和服务器端建立一次连接之后,多次交换数据,直到连接被关闭。 示例代码: …

    Java 2023年5月18日
    00
  • Android学习笔记45之gson解析json

    Android学习笔记45之gson解析json 简介 Google推出的Gson是一个使用Java语言实现的Json解析库,可以将Json字符串自动解析成Java对象,或者将Java对象转成Json字符串。在Android开发中,使用Gson解析Json数据是非常常见的操作。本文将介绍Gson解析Json的完整攻略。 配置Gson库 在项目的build.g…

    Java 2023年5月26日
    00
  • hystrix配置中Apollo与Archaius对比分析

    下面是关于“hystrix配置中Apollo与Archaius对比分析”的完整攻略。 1. 什么是Hystrix Hystrix是一个库,用于隔离远程系统,服务或第三方库,防止它们故障并使自己的应用程序保持连续性,并实现弹性、弹性、监控和回退机制。 2. Hystrix中的配置管理 在Hystrix中,除了默认的配置外,大多数配置都可以在运行时进行更改。Hy…

    Java 2023年6月15日
    00
  • java面向对象:API(接口)与集合(ArrayList)

    Java 面向对象:API(接口)与集合(ArrayList)完整攻略 什么是接口 在 Java 编程中,接口是一种抽象类型,它描述了类能做什么而不描述它们是怎么做到的。接口定义了一个类应该有哪些方法,并且不提供这些方法的实现。任何实现这个接口的类都必须提供它定义的方法。 接口的语法如下: // 定义一个接口 public interface Interfa…

    Java 2023年5月26日
    00
  • Springboot mybatis常见配置问题解决

    下面是Springboot MyBatis常见配置问题解决的完整攻略。 问题一:MyBatis的Mapper不能正常映射数据库表 原因 由于 Mapper 文件和数据库表的对应关系没有处理好,MyBatis 执行时会找不到对应的表或列,导致不能正常映射。 解决方案 确认数据库配置是否正确,包括数据库名称、端口、用户名、密码等。 确认 Mapper 文件的命名…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部