数据库连接池

数据库连接池

为什么需要使用数据库连接池?

普通的JDBC数据库连接(Connection对象)使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,再验证用户名和密码(大概花费0.05s~1s的时间)。也就是说数据库的连接是比较昂贵的(创建成本比较大)。

需要数据库连接的时候,就想数据库请求一个,执行完后再断开连接。这样的方法将会消耗大量的资源和时间
数据库的连接资源并没有得到很好的重复利用,若同时有几百人甚至几千人在线,频繁的进行数据库连接操作将会占用很多的系统资源,严重的甚至会造成服务器的崩溃

对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄露,最终将导致重启数据库
这种开发不能控制被创建的连接对象数,系统资源会被毫无顾忌的分配出去,如果连接过多,也可能导致内存泄露,服务器崩溃

数据库连接池的基本属性
1.连接池是直接和数据库服务器连接在一起的,所以连接池有连接数据库的四个基本信息

  • 驱动名称
  • url
  • username
  • password

2.其它的状态

  • 初始化连接数 - 即连接池中先准备的Connection对象的数量
  • 最大连接数 - 连接池中最多有多少个Connection对象
  • 最小连接数 - 最少存在多少个Connection对象
  • 最大的等待时间 - 最多使用多长时间来申请获取Connection对象,如果到时间还没获取到,则自动放弃

在Java中,连接池使用javax.sql.DataSource接口来表示连接池。
DataSource(数据源)和连接池(Connection Pool)是同一个。注意:DataSource仅仅是一个接口,由各大服务器厂商来实现

常用的DataSource的实现:

  • DBCP:Spring推荐
  • C3P0:Hibernate推荐
  • druid:阿里巴巴的连接池

使用连接池和不使用连接池的区别?
1.获取Connection对象

  • 没有使用连接池:Connection conn = DriverManager.getConnection(url, username, password);
  • 使用连接池:Connection conn = DataSource对象.getConnection();

2.释放Connection对象

  • 没有使用连接池:是和数据库断开连接
  • 使用连接池:是把Connection对象返还给连接池中,并没有和数据库服务器断开

DBCP连接池

DBCP(DataBase connection pool)数据库连接池是 apache 上的一个Java连接池项目。官网

参考:

c3p0连接池

c3p0连接池,是Hibernate推荐使用的连接池,该连接池已有接近10年没有更新了。官网

参考:

druid

druid

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值