简直了通过源码告诉你阿里的数据库连接池

简介

druid是用于创建和管理连接,利用“池”的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制、连接可靠性测试、连接泄露控制、缓存语句等功能,另外,druid还扩展了监控统计、防御SQL注入等功能。

使用例子-入门

需求

使用druid连接池获取连接对象,对用户数据进行简单的增删改查(sql脚本项目中已提供)。

工程环境

JDK:1.8.0_

maven:3.6.1

IDE:eclipse4.12

mysql-connector-java:8.0.15

mysql:5.7.28

druid:1.1.20

主要步骤

编写druid.properties,设置数据库连接参数和连接池基本参数等通过DruidDataSourceFactory加载druid.properties文件,并创建DruidDataSource对象通过DruidDataSource对象获得Connection对象使用Connection对象对用户表进行增删改查创建项目

项目类型MavenProject,打包方式war(其实jar也可以,之所以使用war是为了测试JNDI)。

引入依赖

这里引入日志包,主要为了看看连接池的创建过程,不引入不会有影响的。

编写druid.properties

配置文件路径在resources目录下,因为是入门例子,这里仅给出数据库连接参数和连接池基本参数,后面会对所有配置参数进行详细说明。另外,数据库sql脚本也在该目录下。

当然,我们也可以通过启动参数来进行配置(但这种方式可配置参数会少一些)。

获取连接池和获取连接

项目中编写了JDBCUtil来初始化连接池、获取连接、管理事务和释放资源等,具体参见项目源码。

路径:cn.zzs.druid

编写测试类

这里以保存用户为例,路径在test目录下的cn.zzs.druid。

使用例子-通过JNDI获取数据源

需求

本文测试使用JNDI获取DruidDataSource对象,选择使用tomcat9.0.21作容器。

如果之前没有接触过JNDI,并不会影响下面例子的理解,其实可以理解为像spring的bean配置和获取。

引入依赖

本文在入门例子的基础上增加以下依赖,因为是web项目,所以打包方式为war:

编写context.xml

在webapp文件下创建目录META-INF,并创建context.xml文件。这里面的每个resource节点都是我们配置的对象,类似于spring的bean节点。其中jdbc/druid-test可以看成是这个bean的id。

注意,这里获取的数据源对象是单例的,如果希望多例,可以设置singleton=false。

编写web.xml

在web-app节点下配置资源引用,每个resource-ref指向了我们配置好的对象。

编写jsp

因为需要在web环境中使用,如果直接建议写个main方法测试,会一直报错的,目前没找到好的办法。这里就简单地使用jsp来测试吧。

druid提供了DruidDataSourceFactory来支持JNDI。

测试结果

打包项目在tomcat9上运行,访问


转载请注明:http://www.aierlanlan.com/tzrz/3945.html