【JDBC-07】数据库连接池

1. 数据库连接池的概念

1.背景:
(1) 当前项目较为简单,对于数据库访问并不是很频繁,所以在访问数据库时可以新创建一个连接对象,使用完毕之后关闭连接对象,性能上的开销很小
(2) 但是对于复杂的数据库,频繁的建立,关闭连接,性能上的开销很大,会极大的降低系统的性能,对连接的使用很可能造成系统性能的瓶颈。

2. 解决这种情况的方案:
 在程序启动的时候创建出指定数量的连接保存到池(容器)里面,在要使用连接的时候从池中取出,使用完毕之后回收到池中

3.使用连接池的好处:
(1)不用频繁创建连接
(2)连接池自己管理连接
(3)连接可以重复使用

4. 连接池方案:
(1)dbcp
(2)c3p0,和Spring整合使用
(3)阿里巴巴的Druid连接池(高性能),可以和Spring整合使用,可以实现性能的检测(比如实现慢查询的检测)

2. 使用Druid连接池

2.1 在项目中导入jar包

在这里插入图片描述
在这里插入图片描述

2.2 定义连接池工具类

import com.alibaba.druid.pool.DruidDataSource;

import java.sql.Connection;

public class ConnectionPoolUtil {
    //实例化数据源管理对象
    private static DruidDataSource dataSource = new DruidDataSource();

    static{
        //设置连接地址
        dataSource.setUrl("jdbc:mysql://localhost:3306/demo?useSSL=true&useUnicode=true&characterEncodinng=UTF-8");
        //设置用户名
        dataSource.setUsername("root");
        //设置用户密码
        dataSource.setPassword("xxxxxxxx");
        //设置驱动名称
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        //设置初始化连接数
        dataSource.setInitialSize(10);
        //设置连接数量的上限
        dataSource.setMaxActive(20);
        //设置最大等待时间为3秒
        dataSource.setMaxWait(3000);
        //设置池中最小连接数量
        dataSource.setMinIdle(5);
    }

    /**
     * 从连接池中获取连接对象
     * @return
     */
    public static Connection getConnection(){
        try{
            return dataSource.getConnection();
        }catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }


     /**
     * 关闭连接
     * @param conn
     */
    public static void close(Connection conn){
        try{
           if(conn!=null&&!conn.isClosed()){
               conn.close();
           }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

2.3 使用连接池

在service层实现类中
-------------------
  //取得Connection对象
    Connection conn = ConnectionPoolUtil.getConnection();
    //取得dao层的实现类对象
    private IDAO<Dept> deptDAO = new IDeptDAOImpl(conn);

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值