Druid数据库连接池使用com.alibaba.druid.pool.DruidDataSource

阿里巴巴Druid数据库连接池
阿里巴巴推出的Druid数据库连接池,性能优于DBCP和C3P0。支持Java代码及Spring配置方式创建,具备连接池监控功能。

阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好

 
简单使用介绍
Druid与其他数据库连接池使用方法基本一样(与DBCP非常相似),将数据库的连接信息全部配置给DataSource对象
 
下面给出2种配置方法实例:
1. 纯Java代码创建
 
dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 
dataSource.setUsername("root"); 
dataSource.setPassword("11111111"); dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/jspdemo");
dataSource.setInitialSize(5); 
dataSource.setMinIdle(1);
dataSource.setMaxActive(10); // 启用监控统计功能  
dataSource.setFilters("stat");// for mysql  
dataSource.setPoolPreparedStatements(false);


</pre><pre code_snippet_id="555407" snippet_file_name="blog_20141218_10_4545843" name="code" class="java">

2. 基于Spring创建
 
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> 
      <!-- 基本属性 url、user、password -->
      <property name="url" value="${jdbc_url}" />
      <property name="username" value="${jdbc_user}" />
      <property name="password" value="${jdbc_password}" />

      <!-- 配置初始化大小、最小、最大 -->
      <property name="initialSize" value="1" />
      <property name="minIdle" value="1" /> 
      <property name="maxActive" value="20" />

      <!-- 配置获取连接等待超时的时间 -->
      <property name="maxWait" value="60000" />

      <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
      <property name="timeBetweenEvictionRunsMillis" value="60000" />

      <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
      <property name="minEvictableIdleTimeMillis" value="300000" />

      <property name="validationQuery" value="SELECT 'x'" />
      <property name="testWhileIdle" value="true" />
      <property name="testOnBorrow" value="false" />
      <property name="testOnReturn" value="false" />

      <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
      <property name="poolPreparedStatements" value="true" />
      <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />

      <!-- 配置监控统计拦截的filters -->
      <property name="filters" value="stat" />
</bean>
启用Web监控统计功能需要在Web应用的web.xml中加入这个Servlet声明
  <servlet>
      <servlet-name>DruidStatView</servlet-name>
      <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>DruidStatView</servlet-name>
      <url-pattern>/druid/*</url-pattern>
  <servlet-mapping>
通过http://ip:port/druid/ 地址访问即可
 
项目地址
https://github.com/AlibabaTech/druid/wiki
直接下载发布版本即可,没必要下载源码重新编译
其中的FAQ部分很有参考价值

配置 OceanBase 数据库使用 `com.alibaba.druid.pool.DruidDataSource` 可按以下步骤进行: ### 1. 添加依赖 在 `pom.xml` 中添加 Druid 和 OceanBase 驱动的依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.11</version> </dependency> <dependency> <groupId>com.oceanbase</groupId> <artifactId>oceanbase-client</artifactId> <version>2.4.2</version> </dependency> ``` ### 2. 配置 DruidDataSource 在 Spring Boot 的 `application.properties` 或 `application.yml` 中配置 `DruidDataSource`: #### application.properties ```properties # 数据库连接信息 spring.datasource.url=jdbc:oceanbase://<host>:<port>/<database> spring.datasource.username=<username> spring.datasource.password=<password> spring.datasource.driver-class-name=com.oceanbase.jdbc.Driver # Druid 配置 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # 初始化连接池大小 spring.datasource.druid.initial-size=5 # 最小空闲连接数 spring.datasource.druid.min-idle=5 # 最大活动连接数 spring.datasource.druid.max-active=20 # 获取连接时最大等待时间,单位毫秒 spring.datasource.druid.max-wait=60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 spring.datasource.druid.time-between-eviction-runs-millis=60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 spring.datasource.druid.min-evictable-idle-time-millis=300000 # 用来检测连接是否有效的 SQL,要求是一个查询语句 spring.datasource.druid.validation-query=SELECT 1 # 申请连接时执行 validationQuery 检测连接是否有效,做了这个配置会降低性能 spring.datasource.druid.test-while-idle=true # 申请连接时直接检测连接是否有效 spring.datasource.druid.test-on-borrow=false # 归还连接时检测连接是否有效 spring.datasource.druid.test-on-return=false # 是否缓存 PreparedStatement,也就是 PSCache spring.datasource.druid.pool-prepared-statements=true # 配置 PSCache 最大大小 spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20 # 配置监控统计拦截的filters,去掉后监控界面 SQL 无法统计,'wall'用于防火墙 spring.datasource.druid.filters=stat,wall ``` #### application.yml ```yaml spring: datasource: url: jdbc:oceanbase://<host>:<port>/<database> username: <username> password: <password> driver-class-name: com.oceanbase.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource druid: initial-size: 5 min-idle: 5 max-active: 20 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 test-while-idle: true test-on-borrow: false test-on-return: false pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 filters: stat,wall ``` ### 3. 代码中使用 在代码中可以通过 `@Autowired` 注入 `DruidDataSource`: ```java import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; @Service public class OceanBaseService { @Autowired private DataSource dataSource; public void testConnection() throws SQLException { Connection connection = dataSource.getConnection(); // 使用连接进行操作 connection.close(); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值