简介
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上运行,访问