##Druid连接池,目前全球最出名,也是最常用的连接池,阿里出品,好用到极点,你值得拥有

Druid连接池

在之前我分享过C3P0连接池这个工具类的用法以及具体的代码,今天给大家介绍一款阿里提供的连接池,这也是以后我们常用的,毕竟现在这个连接池是全球公认的最出名,最好用的连接池工具类。

##一,Druid是一个JDBC组件,它包括三部分:

  • DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。 
  • DruidDataSource 高效可管理的数据库连接池。 
  • SQLParser 

##二,Druid可以做什么? 

  1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

  2) 替换DBCPC3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

  3) 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

  4) SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-LoggingLog4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

  扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。

##三,下面我们来说下如何使用:

  ##1,导包:

    

  ##2,定义配置文件,这个不同于C3P0连接池,我们只需要放到src目录下,它就会直接识别,druid需要我们手动设置

    * 优点:

      1,是properties形式的。

      2,可以叫任意名称,可以放在任意目录下。(我们一般还是习惯放在src下面)

  ##3,加载配置文件。Properties

  ##4,获取数据连接池对象:通过工厂来获取  DruidDataSourceFactory
  ##5,获取连接:getConnection();
  ##6,下面我们来看下代码

package cn.liurui.web.druid;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JDBCUtils {
    //创建成员变量
    private static DataSource ds;
    //加载配置文件
    static {
        try {
            Properties pro = new Properties();
            pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
            //获取dataSource连接池对象
            DataSource dataSource = DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception o){
            o.printStackTrace();
        }
    }
    /**
     * 获取连接对象
     */
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
    /**
     * 释放资源
     */
    public static void close(Statement stat,Connection conn){
        close(null,stat,conn);
    }
    public static void close(ResultSet res,Statement stat,Connection conn){
        if(res!=null){
            try {
                res.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(stat!=null){
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 获取连接池
     */
    public static DataSource getDataSource(){
        return ds;
    }
}

Druid 的 JavaDoc 文档请看:

http://tool.oschina.net/apidocs/apidoc?api=druid0.26

原文地址:https://www.cnblogs.com/liurui-bk517/p/11221419.html

时间: 2024-10-20 12:33:53

##Druid连接池,目前全球最出名,也是最常用的连接池,阿里出品,好用到极点,你值得拥有的相关文章

c++实现游戏开发中常用的对象池(含源码)

c++实现游戏开发中常用的对象池(含源码) little_stupid_child2017-01-06上传 对象池的五要素: 1.对象集合 2.未使用对象索引集合 3.已使用对象索引集合 4.当前使用量 5.最大使用量 http://download.csdn.net/download/little_stupid_child/9730912

常用的线程池

要配置一个线程池是比较复杂的,尤其是对于线程池的原理不是很清楚的情况下,很有可能配置的线程池不是较优的,因此在Executors类里面提供了一些静态工厂,生成一些常用的线程池. 1. newSingleThreadExecutor 单线程的线程池 创建一个单线程的线程池.这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务.如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它.此线程池保证所有任务的执行顺序按照任务的提交顺序执行. //创建一个可重用固定线程数的线程池 Exe

常用的连接字符串(vs中连接sqlserver)方便随时查看

Sql Server身份验证有两种,一种是Windows身份验证,还有一种是Sql Server 身份验证 Windows身份验证连接字符串: string connectionString = "Data Source=localhost;database=数据库名称;Integrated Security=True;User Instance=False;"; Integrated Security 指的是集成安全性,为true,就是使用集成安全,后面User Instance 指

无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接

我们添加客户端服务引用的时候会出现这样的错误: 下载“http://localhost:8002/WCFService”时出错. 基础连接已经关闭: 接收时发生错误. 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接.. 远程主机强迫关闭了一个现有的连接. Metadata contains a reference that cannot be resolved: 'http://localhost:8002/WCFService'. Metadata contains a refe

VS建立的Winform程序中连接Oracle数据库能正常运行在Web中却不能正常连接运行可能原因(本文来自博客园深蓝居)

我们平时使用的都是32位的机器进行开发,装的都是32位的软件,但是我们的服务器一般都是64位的,所以有时也需要在64位的环境下装一个VS调试程序.最近遇到的一个问题就是一个同事换了一个电脑,用的是X64的Windows 2008作为操作系统,要进行Oracle的数据库连接,所以也装了64位的Oracle客户端.如果是控制应用项目或者WinForm项目可以正常连接Oracle,但是Web项目在程序中打开Oracle连接时,系统抛出了异常: 尝试加载 Oracle 客户端库时引发 BadImageF

Java 中几种常用的线程池

Java 中几种常用的线程池 转载 : https://www.cnblogs.com/sachen/p/7401959.html 原创 2016年04月14日 23:29:01 标签: java / 线程池 / Executor 878 概述: 在java内置API中操作线程所用到的类为Thread.创建线程一般有两种方式, 继承Thread方式 实现Runnable方式,并以runnable作为target创建Thread 在Android中的耗时任务一般都需要另开线程来执行,常常需要用线程

Java常用的线程池

Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程.newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待.newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行.newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有

Spring中常用的连接池配置

首先,我们准备文件 jdbc.properties,用于保存连接数据库的信息,利于我们在配置文件中的使用 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc\:mysql\://localhost\:3306/mybook jdbc.username=root jdbc.password=1234 一:Spring框架内置的连接池(内置jar包可以使用) 当然,它是使用到  spring-jdbc-4.2.0.RELEASE.jar 在applicat

druid(德鲁伊)数据源的使用和配置 阿里出品

pom.xml <dependency>     <groupId>com.alibaba</groupId>     <artifactId>druid</artifactId>     <version>1.0.9</version> </dependency> 现看配置吧: jdbc.properties druid.url=jdbc:mysql://localhost:3306/ulewo?useUni