Druid

作者: JunChow520 | 来源:发表于2022-10-11 16:07 被阅读0次

    Druid数据库连接池不仅性能高效,还提供完整的监控。

    不管是Druid还是C3P0,本质上都是对DataSource接口的一种实现。

    数据库连接池

    Druid除了基础的数据库连接池功能外,还针对SQL、Spring、Web应用、Session等提供了良好的服务监控,同时还提供了SQL防火墙功能。

    连接池监控

    数据库连接池

    Maven配置依赖

    $ vim pom.xml
    
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.2.8</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.28</version>
    </dependency>
    

    添加数据库连接池配置文件,配置文件名称可自定义,存放位置推荐在resources文件夹下。

    $ vim resources/druid.properties
    
    driverClassName=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://127.0.0.1:3306/fw
    username=root
    password=root
    initialSize=10
    maxActive=20
    maxWait=10000
    

    定义数据库连接池工具类

    $ vim util/DruidUtil.java
    
    package com.jc.util;
    
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    
    import javax.sql.DataSource;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    
    public class DruidUtil {
        private static DataSource ds = null;
        static {
            //导入配置文件
            Properties p = new Properties();
            InputStream is = DruidUtil.class.getClassLoader().getResourceAsStream("druid.properties");
            try {
                p.load(is);
            } catch (IOException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
            //获取数据源
            try {
                ds = DruidDataSourceFactory.createDataSource(p);
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
        //获取数据源
        private static DataSource getDataSource(){
            return ds;
        }
        //获取连接
        public static Connection getConnection(){
            try {
                return ds.getConnection();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
        //释放连接返还连接池
        public static void release(Connection conn, Statement stmt, ResultSet rs){
            if(rs != null){
                try{
                    rs.close();
                }catch (Exception e) {
                    e.printStackTrace();
                }
                rs = null;
            }
            if(stmt != null){
                try{
                    stmt.close();
                }catch (Exception e) {
                    e.printStackTrace();
                }
                stmt = null;
            }
            if(conn != null){
                try{
                    conn.close();
                }catch (Exception e) {
                    e.printStackTrace();
                }
                conn = null;
            }
        }
        public static void release(Connection conn, Statement stmt){
            release(conn, stmt, null);
        }
        public static void release(Connection conn){
            release(conn, null, null);
        }
    }
    

    相关文章

      网友评论

          本文标题:Druid

          本文链接:https://www.haomeiwen.com/subject/blivartx.html