druid连接池

1.为什么要有连接池

之前每次用户来访问数据库,我们都会为这个用户创建一个连接。用户操作之后,这个连接就会关闭。如果以后还由用户来访问,我们还会给用户创建连接。这样频繁创建以及销毁连接对性能带来的影响是比较大的。

解决方式:我们可以预先创建很多的连接,把这个连接放到一个容器中。当用户来访问时,我们从容器中获取连接给用户使用,如果操作完后这个连接也不要关闭,再放回到容器中,这样就可以避免频繁创建以及销毁连接带来的性能问题。这个容器就是连接池。

连接池:就是一个容器,这个容器中预先保存了很多连接,用的时候直接从容器中获取连接,用完再放回去。

2.连接池的API

在JAVA中,有一个接口这个接口叫做javax.sql.DataSource,这个接口是连接池的根接口(规范),所有的连接池都会实现这个接口,在DataSource中有一个方法叫做getConnection,可以通过连接池获取连接。
在这里插入图片描述在这里插入图片描述

3.连接池工具类

/*
    连接池工具类。

    提供的方法:
        获取连接池的方法
        获取连接的方法
        释放资源(连接池中的连接调用close并不是关闭连接,而是归还连接
 */
public class DruidUtils {
    private static DataSource dataSource = null;
    //读取配置文件,以及创建连接池我们只做一次就可以了,所以可以放在静态代码块中
    static {
        try {
            //创建Properties集合
            Properties p = new Properties();
            //从配置文件中读取数据库的四大信息
            InputStream in = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            p.load(in);
            //通过连接池工厂类调用createDataSource方法,根据Properties集合中的四大信息创建连接池
            dataSource = DruidDataSourceFactory.createDataSource(p);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /*
        定义方法,用来从连接池中获取连接
     */
    public static Connection getConnection() throws SQLException {
        Connection con = dataSource.getConnection();
        return con;
    }

    /*
        获取连接池(数据源)的方法
     */
    public static DataSource getDataSource() {
        return dataSource;
    }

    /*
       定义方法,用来释放资源
    */
    public static void close(Connection con, Statement st) {
        close(con, st, null);
    }

    /*
        定义方法,用来释放资源
     */
    public static void close(Connection con, Statement st, ResultSet rs)  {
        try {
            if (con != null) {
                con.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        try {
            if (st != null) {
                st.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        try {
            if (rs != null) {
                rs.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}

druid.properties如下

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名
username=用户名
password=密码
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值