c3p0连接池基础知识(自用)(待补充)

连接池存在的理由:

  • 传统数据库连接方式缺点: 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也比较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、宕机。
    在这里插入图片描述

c3p0连接池:

  • c3p0连接池是将那些已连接的数据库连接存放在一个容器里(连接池),这样以后别人要连接数据库的时候,将不会重新建立数据库连接,会直接从连接池里取出可用的连接,用户使用完毕后,连接又重新还回连接池中。注意:连接池里的连接将会一致保存在内存里,即使你没用也是一样。所以这个时候你得权衡一下连接池的连接数量了。
    在这里插入图片描述

c3p0连接池的实现:

  • 编写连接池需实现javax.sql.DataSource接口。其中定义了两个重载的getConnection方法: Connection
    getConnection() COnnection getConnection(String username,String
    password)

  • 在DataSource构造函数中批量创建与数据库的连接,并把创建的连接保存到一个集合对象中。

  • 实现getConnection方法,让getConnection方法每次调用时,从集合对象中取一个Connection返回给用户。

  • 当用户使用完Connection,调用Connection.close()方法时,Collection对象应保证将自己返回连接池的集合对象中,而不要把conn还给数据库。

  • 扩展Connection的close方法。

  • 在关闭数据库连接时,将connnection存回连接池中,而并非真正的关闭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值