下面我将详细讲解“Java 数据库连接池Druid 的介绍”,分为以下几个方面:
- Druid 简介
- Druid 优势
- Druid 的使用
- 实例演示
1. Druid 简介
Druid 是阿里巴巴开源的一个高效的数据库连接池框架,其功能全面,性能优异,使用方便。Druid 官方提供了界面功能,可以监控数据库连接和 SQL 调用等信息。
Druid 提供以下功能:
- 可以监控数据库访问性能,Druid 内置提供了一个功能强大的 StatFilter 插件,能够详细统计 SQL 的执行性能,这对于线上分析数据库访问性能有很大帮助。
- 内置防御 SQL 注入攻击,使用 Druid 连接池,代码层面就可以防止 SQL 注入攻击。
- 长时间不使用的连接会被关闭,不会影响后续的数据库操作。
- 提供了扩展功能,可以自定义拦截、自定义扩展等。
2. Druid 优势
Druid 相对于传统的数据库连接池具有以下优点:
- 能够监控数据库访问性能,统计 SQL 的执行性能,方便分析数据库的性能瓶颈。
- 提供了对 SQL 注入攻击的防御功能。
- 自带的防火墙可以根据 IP 进行黑白名单过滤,安全性更高。
- 长时间不使用的连接自动关闭,拥有更好的稳定性。
- 支持可重用的 Prepared Statement 和 CallableStatement,有效避免频繁创建对象和字符串拼接,提高性能。
- 内部采用增量更新方式管理连接状态,提高了响应效率和资源利用率。
3. Druid 的使用
使用 Druid 连接池的步骤如下:
- 将 Druid 对应的 JAR 包添加到项目中,在 Maven 中可通过以下方式添加依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.3</version>
</dependency>
- 在 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
- 在代码中通过注入 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技术站