java使用阿里云druid数据库连接池以及优化 - 奇乐云's blog - 奇乐云的个人博客

会飞的鱼

奇乐云
首页 » Java » java使用阿里云druid数据库连接池以及优化

java使用阿里云druid数据库连接池以及优化

一、Druid数据连接池简介
Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。
性能好,同时自带监控页面,可以实时监控应用的连接池情况以及其中性能差的sql,方便我们找出应用中连接池方面的问题。

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

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

二、Druid可以做什么
1.可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统。
2.计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
3.数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
4.SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。


1.需要下载druid jar包导入
2.需要下载jdbc jar包导入
3.配置文件可以随意放

TIM截图20190514152845.png
4.编写一个工具类时运静态方法启动连接池
package cn.qileyun.datasource.utils;

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对象
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取连接
     */
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }

    /**
     * 释放资源
     */
    public static void close(Statement statement,Connection connection) {
        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(connection!=null){
            try {
                connection.close();//归还对象
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 释放资源
     */
    public static void close(ResultSet resultSet, Statement statement, Connection connection) {
        if(resultSet!=null){
            try {
                resultSet.close();//归还对象
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        close(statement,connection);
    }

    /**
     * 获取连接池方法
     */
    public static DataSource getDataSource(){
        return ds;
    }
}

5.编程测试类使用连接池访问

package cn.qileyun.datasource.druid;

import cn.qileyun.datasource.utils.JDBCUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DruidDemo2 {
    public static void main(String[] args) {
        /**
         * 完成添加操作,给account表添加一条记录
         */
        PreparedStatement preparedStatement = null;
        Connection connection = null;
        try {
            //1.获取连接
            connection = JDBCUtils.getConnection();
            //2.定义sql
            String sql = "insert into account values(null,?,?)";
            //3.获取pstmt对象
            preparedStatement = connection.prepareStatement(sql);
            //4.设置值
            preparedStatement.setString(1, "王五");
            preparedStatement.setInt(2, 1000);
            //5.执行sql
            int i = preparedStatement.executeUpdate();
            System.out.println(i);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.close(preparedStatement,connection);
        }
    }
}

文章如无特别注明均为原创! 作者: 奇乐云, 转载或复制请以 超链接形式 并注明出处 奇乐云's blog - 奇乐云的个人博客
原文地址《 java使用阿里云druid数据库连接池以及优化》发布于2019-5-14

分享到:
打赏

评论

游客

切换注册

登录

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册